클로저(Closure)란? 클로저(Closure)란? MDN에서는 클로저를 다음과 같이 정의하고 있다. 클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 ‘기억한다’. 흔히말해 함수 내에서 함수를 선언하고 사용하면 클로저라고 한다. 여기서 바깥쪽 함수는 외부함수, 그 안에서 선언한 함수는 내부함수라고 부른다. 대개 내부함수를 리턴하고 사용은 외부함수의 바깥에서 하게된다. 말로 설명하면 어려우니 아래 코드를 보자. function hello(name) { let _name = name; // 변수명 앞에 underscore(_)를 포함하면 private val임을 의미 return function() { // 클로저 함수 console.log('Hello, '+_name); } .. 개발/프론트엔드 4년 전
호이스팅(Hoisting)에 대해서 알아보자 호이스팅이란 호이스팅이란 함수안에 있는 선언이 끌어올려저 함수의 유효범위 내의 최상단에 선언되는 현상을 말한다. 여기서 유효범위란 함수 블록 내부를 의미한다. function intro() { # 함수의 {} 태그 내부를 유효범위이라고 한다. } 호이스팅은 함수가 실행되기 전에 변수값, 선언을 모아 유효범위의 최상단안에 선언하며 이는 자바스크립트 파서가 함수가 실행되기 전 검토하는 단계에서 실행된다. 이 과정에서 실제로 코드가 위로 끌여올려지는것은 아니며 자바스크립트 파서에서 내부적으로 끌어올리는 작업을 처리하며 실 코드에는 영향이 가지 않는다. 호이스팅의 적용 대상 호이스팅은 var 변수 선언과 함수 선언문에서만 발생하며 함수 할당이나 let/const 변수에서는 발생하지 않는다. var name = .. 개발/프론트엔드 4년 전