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
言い換えれば、最初のものは期待どおりに機能するのに、2 番目のものは機能しないのはなぜでしょうか? 最初のもの(関数自体に名前を付けて関数内から使用する)と2番目のもの(関数を参照する変数を使用する)の実際の違いは何ですか?