【发布时间】:2011-06-22 03:32:12
【问题描述】:
我有一个遵循这种模式的代码:
a = "abcdefghijklmnopqrstuvwxyz";
m = {};
for(i=0;i<10;i++){
m[a.charAt(i)] = function(){
return i;
};
}
console.log(m.c());
它返回 10。
它为什么要这样做? 我怎样才能让它返回相应的数字?
------- 编辑 -------
感谢您的精彩回复。到目前为止提供的答案适用于上述示例,但我忘了提到我需要传递一个回调函数。考虑到你的建议,我想出了这个:
a = "abcdefghijklmnopqrstuvwxyz";
m = {};
f = function(i) {
return function(){
return i;
}
}
for(i=0;i<10;i++){
var eval('n') = "hi";
console.log(n);
m[a.charAt(i)] = function(fn){
fn(f(i));
};
}
m.c(function(a){console.log(a);});
结果与我的直觉一致,即它行不通。有人对此有任何想法吗?
感谢您的帮助
在您的帮助下,我得以开始这个项目: https://github.com/sbussard/python-for-node
请随时按照您的意愿继续贡献。
【问题讨论】:
标签: javascript node.js scope