R 和 Javascript 之间的具体区别是什么,这意味着在以下两个非常相似的示例中,我需要 R 版本中的附加行来“修复”第一个匿名函数的参数值?
是因为 R 推迟评估直到它被强制执行(我认为 Lisp 就是这样做的),但是 Javascript 尽可能早地评估?还是我在这里走错了路?
R版
test <- list()
for (i in 1:10) {
test[[i]] <- (function(index) {
index <- index # why does R need this line when Javascript doesn't
return (function() {
print (index)
})
})(i)
}
test[[5]]()
test[[10]]()
Javascript 版本
test = new Array()
for (var i=1; i<=10; i++) {
test[i] = (function(index) {
return function() {
alert(index)
}
})(i)
}
test[5]()
test[10]()