从javascript.info:命名函数表达式和使用变量引用之间的区别?
function makeArmy() {
var shooters = []
for(var i=0; i<10; i++) {
var shooter = function shoot() {
alert(shoot.i)
}
shooter.i = i
shooters.push(shooter)
}
return shooters
}
var army = makeArmy()
army[0]() // 0
army[1]() // 1
有趣的部分:
var shooter = function shoot() {
alert(shoot.i)
}
shooter.i = i
我的问题是:为什么下面不工作:
var shooter = function() {
alert(shooter.i)
}
shooter.i = i
换句话说,为什么第一个按预期工作,而第二个不是?第一个(给函数本身一个名称并在函数内使用它)和第二个(使用引用该函数的变量)之间的实际区别是什么?