function test() {
var n = 0
for (var i = 0; i < 1; i++) {
var n = 1 // 没有声明新的n;只是对前面的n赋了新值而已
}
alert(n) // 1
alert(i) // 1;i在此也可以访问
}
function test() {
var n = 0
for (var i = 0; i < 1; i++) {
(function () { // 声明了一个匿名函数
var n = 1 // 声明并初始化了新的n
})() // 直接在声明完匿名函数后调用之
}
alert(n) // 0
alert(i) // 1;i在此也可以访问
}
控制作用域,避免命名冲突,匿名函数的好处体现出来了