Front-end/Javascript
함수 vs 블록 스코프
madison
2021. 4. 13. 22:01
변수와 함수를 스코프 안에 숨기는것은 종종 변수값의 겹쳐쓰기를 초래한다.
스코프 역할을 하는 함수
function이 구문의 시작 위치에 있다면 함수선언문이며, 그외의 경우는 함수 표현식이다.
익명함수 표현식
익명함수는 쉽게 입력할 수 있는 장점 때문에 많은 라이브러리에서 이 표현식을 권장하나, 몇가지 단점이 있다.
1) 디버깅이 어 더어려움 2) 기능을 나타내는 이름이 없기때문에 어떤기능을 위한 함수인지 명확하지 않다.
IIFE ( Immediately Invoked Function Expression )
()로 함수를 감싼 형태는 함수를 표현식으로 바꾸고, 두번째 ()는 함수를 실행시킨다. IIFE는 익명함수로 흔하게 사용된다.
블록 스코프
블록스코프의 목적은 변수를 최대한 사용하는 위치에서 가깝게 최대한 작은 유효 범위를 갖도록 선언하는 것이다.
- try / catch : catch 부분에서 선언된 변수는 catch 블록 스코프에 속한다.
- let : 선언된 변수를 둘러싼 블록의 스코프에 속한다.
가비지 컬렉션
click 함수는 someData 가 불필요하나, click 함수가 해당 스코프 전체의 클로저를 가지고 있기 때문에 자바스크립트 엔진은 데이터를 남겨둘 것이다.
: 명시적으로 블록을 선언하여 someData의 영역을 한정시켰다.
출처 : You don't know JS