0
這可能已經問過,但...
如果我想要的功能
列表var funs = [
function(){ console.log(1); },
function(){ console.log(2); },
function(){ console.log(3); },
function(){ console.log(4); },
function(){ console.log(5); } ]
這似乎是一個可以通過類似使其:
var funs = [];
for(var i=1; i <= 5; i++){
funs.push(function(){ console.log(i) };
}
不工作,作爲變量i
是必然的所有功能的單一變量,從而使
funs[0](); funs[1](); funs[2](); funs[3](); funs[4]();
輸出
6
6
6
6
6
不
1
2
3
4
5
這不是我想要的輸出。我想我需要在創建函數時強制javascript綁定i
的值副本,而不是使用i
的引用關閉。我將如何做到這一點?
使用閉包的工作,但我只想補充一點,現代的方式(JS> 1.8.5)做這是通過使用'bind' - 參見https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind –
完美,謝謝。 – Lucas
@DavidTitarenco:你的意思是'推(console.log.bind(console,i))'?當然,這比嵌套兩個函數更優雅。 – Bergi