Function receives only first element of String array
本问题已经有最佳答案,请猛点这里访问。
亲爱的程序员们
我正在处理过去两个小时来一直在尝试调试的异常问题。我正在编写一个Web前端,它从使用window.apply函数执行的服务器接收命令。triggerEvents函数用于处理所有不同的命令,并将从服务器发送的参数传递给相应的函数(请参见下面的代码)。
1 2 3 4 5 6 7 8 | function triggerEvents(commands){ for (var index = 0; index < commands.length; index++){ var command = commands[index]; console.debug("execute"); console.debug(command); console.debug(command.arguments); window[command.function].apply(null, command.arguments) } |
}
一般来说,这很好地工作,但是,一个特定的函数(下一个代码列表)被传递一个字符串数组,但是由于某种原因,函数中只有第一个元素可用。
1 2 3 4 5 | function updateAvailableBlocks(args) { availableBlocks = [] for(i=0; i < args.length; i++) { availableBlocks[i] = args[i]; } |
}
现在,当我检查调试器时,我可以确认我确实从服务器收到了一个字符串数组,并且该特定数组按预期传递到window.apply。
但当我单步执行函数时,我只能看到第一个元素。
我确保所有缓存都被删除,并且我没有使用过时的代码,但是我想不出会导致这种情况的原因。我非常感谢你在这方面的敏锐头脑。
事先谢谢!
用
1 2 3 4 5 6 7 | function foo(arg) { console.log(arg); } const arr = ['a', 'b', 'c']; foo.apply(null, arr); foo.call(null, arr); |
或者您可以使用
1 2 3 4 5 6 | function foo(...arg) { console.log(arg); } const arr = ['a', 'b', 'c']; foo.apply(null, arr); |