У меня есть код, который следует этому шаблону:
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
Пожалуйста, продолжайте вносить свой вклад, как вы пожелаете.