gpt4 book ai didi

javascript - 未捕获的类型错误 : Illegal invocation in JavaScript

转载 作者:IT王子 更新时间:2023-10-29 03:12:23 34 4
gpt4 key购买 nike

我正在创建一个 lambda 函数,它使用具体参数执行第二个函数。此代码在 Firefox 中有效,但在 Chrome 中无效,它的检查器显示一个奇怪的错误,Uncaught TypeError: Illegal invocation。我的代码有什么问题?

var make = function(callback,params){
callback(params);
}

make(console.log,'it will be accepted!');

最佳答案

控制台的日志功能期望 this 引用控制台(内部)。考虑复制您的问题的这段代码:

var x = {};
x.func = function(){
if(this !== x){
throw new TypeError('Illegal invocation');
}
console.log('Hi!');
};
// Works!
x.func();

var y = x.func;

// Throws error
y();

这是一个可行的(愚蠢的)示例,因为它在您的 make 函数中将 this 绑定(bind)到 console:

var make = function(callback,params){
callback.call(console, params);
}

make(console.log,'it will be accepted!');

这也行

var make = function(callback,params){
callback(params);
}

make(console.log.bind(console),'it will be accepted!');

关于javascript - 未捕获的类型错误 : Illegal invocation in JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8904782/

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