我的Javascript代码出错
你有一个数字数组。编写一个函数,将数组转换为返回原始数字的函数数组,因此我们将调用a3,而不是调用[3]。例如: 变换[1,2,3]→ [函数{return 1;},函数{return 2;},函数{return 3;}] 请不要在我们的回答中使用“EVAL”或“新的函数”,因为我们考虑了这些坏的风格。 我不能运行这个,一些我无法发现的错误我的Javascript代码出错,javascript,Javascript,你有一个数字数组。编写一个函数,将数组转换为返回原始数字的函数数组,因此我们将调用a3,而不是调用[3]。例如: 变换[1,2,3]→ [函数{return 1;},函数{return 2;},函数{return 3;}] 请不要在我们的回答中使用“EVAL”或“新的函数”,因为我们考虑了这些坏的风格。 我不能运行这个,一些我无法发现的错误 var arrayOfNum = [0,1,2]; var arraylength = arrayOfNum.length; for(var i = 0
var arrayOfNum = [0,1,2];
var arraylength = arrayOfNum.length;
for(var i = 0; i < arraylength; i++){
var hold = arrayOfNum.pop();
function passValue(num){
arrayOfNum.unshift(function(){return hold;});
}
}
有人能帮我指出这段代码中的错误吗您没有调用passValue函数,因此在弹出行之后,实际上没有执行任何操作。我甚至不认为该函数可以被调用,因为它在for循环中的作用域应该防止它被绑定到封闭函数。除了尝试3次重新定义函数外
var arrayOfNum = [0,1,2];
var arraylength = arrayOfNum.length;
for(var i = 0; i < arraylength; i++){
var hold = arrayOfNum.pop();
function passValue(num){
arrayOfNum.unshift( function(){return hold;} );
}
}
如果使用Firefox,您可以在错误控制台工具->错误控制台中看到javascript错误
你看起来一点错误都没有,但我想什么都不会发生。你到底想干什么?我在forloop中看到一个从未调用过的函数passValue。实际上,您想要做什么并不明显。我可能猜您想用函数替换数字,如果是这样,您可以写:
var arrayOfNum = [0,1,2];
var arraylength = arrayOfNum.length;
for(var i = 0; i < arraylength; i++){
var hold = arrayOfNum.pop();
function passValue(num){
arrayOfNum.unshift(function(){return num;});
}
passValue(hold);
}
alert(arrayOfNum[0]()); //0
alert(arrayOfNum[1]()); //1
alert(arrayOfNum[2]()); //2
使用map,您可以获得理想的结果+非常简短和清晰的代码:
arr = [1, 2, 3];
arr = arr.map(function(n) {
return function() { return n; }
});
你犯了什么错误,先生?@Rahul:这取决于你想让代码做什么。passValue函数的作用是什么?