【发布时间】:2018-10-26 13:33:53
【问题描述】:
亲爱的程序员们
我正在处理过去两个小时一直在尝试调试的异常问题。我正在编写一个 Web 前端,它从使用 window.apply 函数执行的服务器接收命令。 triggerEvents 函数用于处理所有不同的命令,并将从服务器发送的参数传递给相应的函数(参见下面的代码)。
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)
}
}
一般来说效果很好,但是,一个特定的函数(下一个代码清单)被传递一个字符串数组,但由于某种原因,函数中只有第一个元素可用。
function updateAvailableBlocks(args) {
availableBlocks = []
for(i=0; i < args.length; i++) {
availableBlocks[i] = args[i];
}
}
现在,当我检查调试器时,我可以确认我确实收到了来自服务器的字符串数组,并且该特定数组已按预期传递给 window.apply。
但是当我进入函数的执行时,我只能看到第一个元素。
我确保删除了所有缓存并且我没有使用过时的代码,但我想不出会导致这种情况的原因。非常感谢您在这方面的敏锐头脑。
提前致谢!
【问题讨论】:
-
args将只是传递给updateAvailableBlocks的第一个参数。 -
对于您的案例表现这种方式的原因的详细信息,
apply将获取您的参数数组并使用您的数组中的单独参数触发函数(第一个数组元素将是第一个参数, second 将是第二个参数,等等)
标签: javascript arrays frontend