본문 바로가기

자바스크립트

(2)
[JavaScript] - 클로저(Closure) ● 클로저 클로저란 내부함수가 외부함수의 컨텐스트에 접근할 수 있는 것을 가르킨다. - 쉽게 설명하면 함수 내에서 함수를 정의하고 사용하면 클로저라고 한다. - 클로저는 외부함수의 지역변수, 인자 등을 외부함수가 종료된 이후에도 사용이 가능한다. 이러한 변수를 자유변수라고 한다. 소스코드로 살펴보면 다음과 같다. 클로저 위 코드를 살펴보면 closure() 는 함수를 반환하고, 반환된 함수는 closure() 내부에서 선언된 변수를 참조하고 있다. 이렇게 참조된 변수는 함수 실행이 끝나도 사라지지 않고 여전히 옳바른 값을 반환하는 것을 알 수 있다. ● 클로저를 통한 은닉화 클로저를 사용하면 외부에서 변수에 직접 접근하는 것을 제한할 수 있다. 즉 변수를 객체지향의 private 처럼 사용할 수 있다. ..
[JavaScript] - 호이스팅(Hoisting) 호이스팅(Hoisting)이란? - 함수 안에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최 상단에 선언하는 것을 말한다. - 자바스크립트 함수는 실행되기 전에 함수 안에 필요한 변수값들을 모두 모아서 유효 범위의 최상단에 선언한다. js에서 다음과 같은 코드를 실행하면 결과가 다음과 같이 나온다. undefined test 결과를 보면 알 수 있듯이, test 변수를 정의 하기 전에 console.log(test)를 하였는데도 오류가 나지 않고 undefind 값이 출력되는 것을 볼 수 있다. 왜 그렇게 출력이 되냐면 자바스크립트엔진에서 var test = 'test'를 var test와 test='test'로 분리하여 변수 선언부를 함수 상단부로 끌어올려서 선언해버리므로 오류가 나지않고 출력..