gpt4 book ai didi

javascript - 如何使用 Javascript 函数作为另一个函数的参数?

转载 作者:行者123 更新时间:2023-11-30 08:55:25 26 4
gpt4 key购买 nike

每当我尝试在 Chromium 中运行此函数时,我都会收到错误消息“Uncaught TypeError: Illegal invocation”。为什么会发生这种情况,我该如何解决?

getOutput([alert], ["Hi!", "Hello!", "Lolwut?"]); //why doesn't this call "alert"
//for each of the arguments?

//this function is supposed to return the output of each function for each argument.
function getOutput(functions, arguments){
for(var i = 0; i < functions.length; i++){
for(var j = 0; j < arguments.length; j++){
functions[i](arguments[j]); //why doesn't this call the function
}
}
}​

最佳答案

编辑:

虽然此处给出的修复有效,但原因似乎如 rbtLong 所建议的那样, native 函数(特别是此处的 alert)是在其上下文之外调用的。使用这样的包装器:

function F(arg) {alert(arg);}

代替代码中的 alert 使代码运行。尽管如此,如果您想要一个可以采用 native 功能的通用功能,下面建议的修复方法仍然有效。


(顺便说一句:在 Safari 和 Firefox 中也是如此)

这似乎与不允许在其后立即调用的数组访问结构有关。也许就像您不能执行 1.toString() 一样。您可以像这样快速修复它:

getOutput([alert], ["Hi!", "Hello!", "Lolwut?"]);

function getOutput(functions, arguments){
for(var i = 0; i < functions.length; i++){
for(var j = 0; j < arguments.length; j++){
var f = functions[i];
f(arguments[j]);
}
}
}​

关于javascript - 如何使用 Javascript 函数作为另一个函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13925945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com