이번 글은 function scope와 block scope를 다뤄본다.
es6에서 let과 const 키워드를 다루기 위한 필요한 지식들을 위한 글이다.
자바스크립트에서 변수 선언시 var 키워드를 사용한다는 것을 알고 있다.
아직까지는 es5를 대부분 사용한다. (잘 모르겠다면 현재 사용하거나 책에서 보는 것들이 es5)
하지만 점차 es6를 접하고 있고 훨씬 빠른 속도로 지향할 것으로 생각한다.
function scopeTest(){
var is = true;
if(is){
var is = false;
}
for(var i=0; i<=5; i++){
var inFor = i;
}
console.log(inFor); // 출력되는 값은?
console.log(is);
}
inFor 변수는 어떤 값이 출력될 것인가?
var es = [];
for(var i=0; i<10; i++){
es[i] = function(){
console.log("ECMAScript is ES" + i);
};
}
es[6](); // 출력되는 값은?
es[6]() 호출시 무엇이 출력될까?
var es = [];
for(var i=0; i<10; i++){
(function(i){
es[i] = function(){
console.log("ECMAScript is ES" + i);
};
})(i);
}
es[6]();
즉시실행함수를 통해 i의 scope를 block scope와 같은 형태로 분리했다.
var es = [];
for(let i=0; i<10; i++){
es[i] = function(){
console.log("ECMAScript is ES" + i);
};
}
es[6]();