当前位置: 首页 > 面试题库 >

未捕获的TypeError:JavaScript中的非法调用

都超英
2023-03-14
问题内容

我正在创建一个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();

这是一个有效的示例,因为它绑定thisconsole您的make函数中:

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!');


 类似资料:
  • 问题内容: 当我用下面的代码来做一些本机支持的动画时: 直接致电会给… 未捕获的TypeError:非法调用 在Chrome中。为什么? 问题答案: 在您的代码中,您正在将本机方法分配给自定义对象的属性。当您调用时,它将在当前对象(即支持)的上下文中执行。为了使本机requestAnimationFrame函数正常工作,必须在的上下文中执行它。 因此,此处的正确用法是 。 警报也会发生相同的情况:

  • 问题内容: 我正在扩展Chrome。好。将tampermonkey脚本转换为chrome扩展程序。我运行它,并在chrome控制台中给出以下错误: 是什么导致此问题? 尝试将我的代码包装在IIFE代码中: 尝试IIFE方法时出现以下错误: 问题答案: 你不能返回,除非你在一个函数中 您可以将所有代码包装在IIFE中 或者

  • 我刚刚创建了php web服务器并将其连接到firebase。当我尝试身份验证时,注册工作正常。但问题在于登录。它不断出现以下错误: 致命错误:未捕获错误:调用未定义的方法Kreait\Firebase\Auth::在 /Applications/XAMPP/xamppfiles/htdocs/firebase_series/authActions.php:24Stack跟踪:#0{main}抛出

  • 问题内容: 我正在尝试做一些相当简单的事情,但是由于我可能不够出色而无法搜索文档,因此无法正常工作。 我有一个运行正常的内联JS,看起来像这样: 由于各种原因,我试图分离JS,而这正是我遇到的障碍。 我创建了以下测试页面,该页面给出了错误消息: 我唯一能找到的问题就是这样的问题,它无法使用但应该处理(这很适合我,因为我将其倒在一些图像上),所以我尝试添加以下无济于事: 在此先感谢您指出我做错了什么

  • 问题内容: 我有两个选择元素,A和B:当A的选择的选项更改时,B的选项必须相应地更新。A中的每个元素都暗示着B中的许多元素,这是一对多的关系(A包含国家,B应该包含位于给定国家中的城市)。 该函数应运行异步请求: 为了更新B的选项,我在A的事件中添加了一个函数调用。这是触发onChange事件(of )时运行的函数: } 我已经阅读了JQuery文档,该文档可以是数组(键值对)。我输入以下错误:

  • 我想看看我的WordPress主题,我收到了这个错误: 致命错误:未捕获错误:调用未定义的函数have_post()在C:\xampp\htdocs\wordpress\wp-内容\主题\ChachoTheme\index.php: 6堆栈跟踪:#0 C:\xampp\htdocs\wordpress\wp-包括\template-loader.php(74):包括()#1 C:\xampp\HT