내맘대로 살기🎉
[Javascript] 유효범위 본문
자바스크립트 닌자 비급이라는 책으로 공부 중에, 정리가 너무 잘되어 있어서, 나 또한 정리를 하고 머릿속에 더 깊숙한 곳에 넣고 싶었다.
다른 언어들과는 다르게 javascript에서는 유효범위가 조금은 다르다.
JAVA를 예로 들면,
if (window) {
var x = 111;
}
alert(x);
라고 하면, x는 undefined 값이 나온다.
하지만 Javascript에서는 x가 111이라는 값을 갖고 있다.
위의 코드에서 변수 a,b,c와 함수 inner()의 유효범위를 확인해보자.
outer() 함수 내에 있는 변수 a,b,c는 초기화된 시점에서 outer() 함수가 끝나는 지점까지 그 값을 갖는다.
그렇다면 inner() 함수도 선언된 시점에서 outer() 함수가 끝나는 지점까지 함수의 기능을 할까?
아니다.
outer() 함수 내에 맨 밑에 inner() 함수가 선언되어도 outer() 함수가 시작하는 시점부터 inner() 함수의 기능을 사용할 수 있다. 이것을 hoisting(끌어올리기)이라고 한다. hoisting이란, 단어 그대로 끌어올리기다. 그래서 말 했듯이, inner() 함수가 outer() 함수 내의 가장 밑에 선언되었다고 하더라도, outer() 함수가 시작되는 시점부터 inner() 함수의 기능을 선언하여 사용할 수 있다.
직접 scope를 사진으로 확인해보자.
백문이 불여일견, 역시 글보단 사진이다.
참고 : Secrets of the Javascript Ninja (존레식, 베어 바이볼트)
반응형
'개발자의 길 > Javacsript' 카테고리의 다른 글
[Javascript] 느낌표 두 개(!!)의 의미 (0) | 2017.05.19 |
---|---|
[Javascript] 재귀함수를 이용하는 방법 (0) | 2017.05.19 |
[Javascript] A ? B ? C : D : E 라는 연산자 ? 이중삼항연산자 (2) | 2017.04.28 |
Comments