你有一系列数字。编写一个函数,将数组转换为返回原始数字的函数数组,因此我们将调用a3而不是调用[3]。例如:
transform([1,2,3])→[function(){return 1;},function(){return 2;},function(){return 3;}] 在我们考虑这些不好的风格时,请不要在答案中使用'eval'或'new Function'。
我无法运行此错误,我无法找到一些错误
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;});
}
}
任何人都可以帮我指出这段代码中的错误
答案 0 :(得分:0)
您没有调用passValue
函数,因此在pop
行之后,实际上没有执行任何操作。我认为甚至不能调用该函数,因为它在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;} );
}
}
答案 1 :(得分:0)
如果你使用Firefox,你可以在错误控制台(工具 - &gt;错误控制台)中看到javascript错误。
你似乎根本没有错误,但我猜不会发生任何事情。无论如何你还想做什么?我在forloop里面看到一个函数passValue(),它永远不会被调用。
答案 2 :(得分: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 num;});
}
passValue(hold);
}
alert(arrayOfNum[0]()); //0
alert(arrayOfNum[1]()); //1
alert(arrayOfNum[2]()); //2
答案 3 :(得分:0)
使用 map ,您可以获得所需的结果+非常简短的代码:
arr = [1, 2, 3];
arr = arr.map(function(n) {
return function() { return n; }
});