- 在JavaScript 中,if语句和for循环中的变量声明会将变量添加到当前的执行环境(作用域)
- JavaScript中没有块级作用域
- var声明的变量会自动被添加到最接近的环境中
Demo1
var myAlerts = [];
for (var i = 0; i < 5; i++) {
myAlerts.push(
function inner(i) {
alert(i); // 此时的i将会添加到inner函数自己的执行环境的变量对象上
}
);
}
myAlerts[0]();
myAlerts[1]();
myAlerts[2]();
myAlerts[3]();
myAlerts[4]();
Demo2
// 全局作用域global context
var myAlerts = [];
for (var i = 0; i < 5; i++) {
myAlerts.push(
function inner() {
alert(i); //此时的i会被添加到 global context的环境对象上
}
);
}
myAlerts[0]();
myAlerts[1]();
myAlerts[2]();
myAlerts[3]();
myAlerts[4]();