// ES5中作用域
const callbacks =[];
for(var i = 0;i <= 2;i++){
callbacks[i] = function(){
return i * 2; // 闭包
}
}
console.log([
callbacks[0](),
callbacks[1](),
callbacks[2](),
])
2.
// ES6
const callback2= [];
for(let j = 0;j <= 2;j++){
callback2[j] = function(){ // 大括号块级作用域
return j * 2;
}
}
console.log([
callback2[0](),
callback2[1](),
callback2[2](),
]);
3.
// 立即执行函数
// ES5实现
(() => {
const foo = function(){
return 1;
}
console.log('foo() === 1',foo() === 1); // foo() === 1 true
(() => {
const foo = function(){
return 2;
}
console.log('foo === 2',foo() === 2); // foo === 2 true
})()
})()
// ES6实现
{
function foo(){
return 1
}
console.log("foo() === 1",foo() === 1); //..true
{ // 新的作用域
function foo(){
return 2
}
console.log('foo() === 2',foo() === 2); //..true
}
console.log("foo() === 1",foo() === 1); //..true
}