为什么jslint不像在函数表达式上使用call()?

时间:2014-02-02 14:47:58

标签: javascript jslint

我收到了这个错误。

Unexpected '.'.

这一行:

}).call(this);

我检查了jslinterrors.com但找不到原因。

使用以下方法重现错误:

(function () {
    "use strict";
    var a = 1;
    a = a + 1;
}).call(this);

3 个答案:

答案 0 :(得分:0)

可能是因为您使用匿名函数,这是一种反模式。以下应该有效:

(function () {}())

答案 1 :(得分:0)

我发现您提供的代码没有任何问题。也许在jslint执行的解析中有一些不正确的东西,或者可能存在警告的真正原因,我找不到一个。通过一点点跳舞,您可以通过这样的方式发出警告。

/*global console */
(function () {
    "use strict";

    return function () {
        var a = 1;
        a = a + 1;
        console.log(this);
    };
}()).call([]); // used array rather than this so that it is easy to see in console

jsFiddle

答案 2 :(得分:-2)

括号中包含的函数应立即调用,因此您无法在那里使用.call()

功能使用示例

(function () {
    // do something
})();

相反,你可以做到

var foo = function () {
    // do something
};

foo.call(this); // within scope