相关疑难解决方法(0)

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

我正在创建一个lambda函数,它使用具体的params执行第二个函数.这个代码适用于Firefox,但不适用于Chrome,它的检查器显示一个奇怪的错误,Uncaught TypeError: Illegal invocation.我的代码出了什么问题?

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

make(console.log,'it will be accepted!');
Run Code Online (Sandbox Code Playgroud)

javascript lambda functional-programming invocation

36
推荐指数
1
解决办法
3万
查看次数

for循环错误中的JavaScript匿名函数

您好我正在阅读"JavaScript:权威指南"第6版,并在9.1 Classes和Prototypes中尝试了其中一个示例.

function range (from, to) {
    var r = Object.create(range.methods);

    r.from = from;
    r.to = to;
    return r;
}

range.methods = {
    includes: function(x) { 
        return this.from <= x && x <= this.to; 
    },
    foreach: function(f) {
        for(var x = Math.ceil(this.from); x <= this.to; x++) 
            f(x);
    },
    toString: function() { 
        return "(" + this.from + "..." + this.to + ")"; 
    }
};
Run Code Online (Sandbox Code Playgroud)

将其加载到控制台会引发错误

未捕获的TypeError:非法调用class.js:31.range.methods.foreach class.js:31(匿名函数)

我想foreach方法的意图是将函数名称作为参数传递

var r = range(1, 3);
r.foreach(console.log);
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决此错误?

javascript prototype function object

3
推荐指数
1
解决办法
138
查看次数

什么是javascript中的非法调用typeerror

我有javascript代码,如果它在浏览器中运行会引发警报,但是当我运行单元测试时我不想提出警报.

我试着用一条线来解决这个问题

if( allowAlerts === false ){
    alert = console.log;
}
Run Code Online (Sandbox Code Playgroud)

但是当我跑的时候

alert("This bad thing happened");
Run Code Online (Sandbox Code Playgroud)

我回来了

TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)

直接重新分配警报是一个kludgey解决方案,我可以通过其他方式轻松解决问题,但我以前从未遇到过非法调用错误,并希望有人能够解释它的含义.

javascript

2
推荐指数
1
解决办法
4605
查看次数