用于循环意外结果的javascript
我正在使用一个名为partial的函数,它根据您提供的参数创建另一个函数。然而,由于某种原因,如果在函数内部调用类似这样的for循环而不使用var.但是,即使它的全局值在第一个循环完成后i被设置回0,并且应该没有任何错误的原因,对吗?除非在循环中使用“i”的一个函数调用另一个使用相同变量的函数,否则它是有效的。用于循环意外结果的javascript,javascript,for-loop,map,partial,higher-order-functions,Javascript,For Loop,Map,Partial,Higher Order Functions,我正在使用一个名为partial的函数,它根据您提供的参数创建另一个函数。然而,由于某种原因,如果在函数内部调用类似这样的for循环而不使用var.但是,即使它的全局值在第一个循环完成后i被设置回0,并且应该没有任何错误的原因,对吗?除非在循环中使用“i”的一个函数调用另一个使用相同变量的函数,否则它是有效的。 var op = { "+": function(a, b){return a+b;}, "==": function(a, b){return a == b;},
var op = {
"+": function(a, b){return a+b;},
"==": function(a, b){return a == b;},
"===":function(a, b){return a === b;},
"!":function(a){return !a;}
};
function map(func, array){
var result = [];
forEach(array, function(element){
result.push(func(element));
});
return result;
}
function forEach(array, action){
for(i=0; i<array.length; i++){
action(array[i]);
}
}
function partial(func) {
var knownArgs = arguments;
return function() {
var realArgs = [];
for(i=1; i<knownArgs.length; i++){
realArgs.push(knownArgs[i]);
}
for(i=0; i<arguments.length; i++){
realArgs.push(arguments[i]);
}
return func.apply(null, realArgs);
};
}
console.log(map(partial(op["+"], 1), [0,2,4,6,8,10]));