Front-end/Javascript

함수 vs 블록 스코프

madison 2021. 4. 13. 22:01

변수와 함수를 스코프 안에 숨기는것은 종종 변수값의 겹쳐쓰기를 초래한다. 

무한 루프 
bar() 내부의 대입문은 지역 변수로 선언해서 사용해야한다. 

 

스코프 역할을 하는 함수 

(function .... : 함수 표현식

function이 구문의 시작 위치에 있다면 함수선언문이며, 그외의 경우는 함수 표현식이다.

 

익명함수 표현식 

익명함수는 쉽게 입력할 수 있는 장점 때문에 많은 라이브러리에서 이 표현식을 권장하나, 몇가지 단점이 있다.

1) 디버깅이 어 더어려움 2)  기능을 나타내는 이름이 없기때문에 어떤기능을 위한 함수인지 명확하지 않다.

 

IIFE ( Immediately Invoked Function Expression ) 

()로 함수를 감싼 형태는 함수를 표현식으로 바꾸고, 두번째 ()는 함수를 실행시킨다. IIFE는 익명함수로 흔하게 사용된다. 

 

블록 스코프

블록스코프의 목적은 변수를 최대한 사용하는 위치에서 가깝게 최대한 작은 유효 범위를 갖도록 선언하는 것이다. 

- try / catch : catch 부분에서 선언된 변수는 catch 블록 스코프에 속한다. 

- let : 선언된 변수를 둘러싼 블록의 스코프에 속한다. 

가비지 컬렉션 

click 함수는 someData 가 불필요하나, click 함수가 해당 스코프 전체의 클로저를 가지고 있기 때문에 자바스크립트 엔진은 데이터를 남겨둘 것이다. 

: 명시적으로 블록을 선언하여 someData의 영역을 한정시켰다.

 

 

 

출처 : You don't know JS