Loading...

[JS] 스코프 Scope

스코프는 변수에 접근할 수 있는 범위 이다. 자바스크립트는 기본적으로 ES5까지는 함수 단위 스코프를 지원했고 ES6에 와서 블록 단위 스코프를 지원한다. var가 함수 단위의 스코프를 지원하고 let, const가 블록 단위 스코프를 지원한다. var, 함수 단위 스코프 if 나 for 문 같은 블록의 변수는 공유되나 함수 스코프 내의 변수는 공유하지 않는다. var a=1; // 전역 스코프 // if, for와 같은 블록은 같은 스코프라고 인식해서 블록을 지나도 해당 변수에 // 접근할 수 있다. if(true){ var a=2; } // 함수 내에서 선언된 변수는 함수 스코프를 지원하므로 함수 밖에서는 해당 변수에 // 접근할 수 없다. function test(){ var b=3; console..

[JS] Hoisting 호이스팅

아직 선언하지 않은 변수를 호출하더라도 undefined가 출력된다면? 이것이 바로 호이스팅 console.log(a); // undefined; console.log(test);//undefined; console.log(test2); // function test2 () {...} 저 밑에 선언한 함수가 출력된다 오잉 var a='호이스팅'; // 호이스팅 되는 var 변수 //함수 표현식은 호이스팅 되지 않지 하지만 var test 변수는 호이스팅 된다. var test=function(){ console.log('test'); } //호이스팅이 되는 함수 선언문..!! function test2(){ console.log('test2'); } 분명 변수를 선언하기 전에 호출 먼저 했는데도 에러가 ..