使用`bind`时JSHint会出现“Possible strict violation”吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (64)

考虑这个简单的代码:

"use strict";

var obj = {
    f: function() {
        this.prop = 'value';
        g.bind( this )();
    }
};

function g() {
    console.log( this.prop );
}

如果我试图验证此代码,jshint给我的错误——Possible strict violation.

这是什么原因?

提问于
用户回答回答于

你可以使用选项validthis来抑制此警告:

"use strict";

var obj = {
    f: function() {
        this.prop = 'value';
        g.bind( this )();
    }
};

function g() {
    /*jshint validthis:true */
    console.log( this.prop );
}

应该指出的是,jshint注释是函数范围的。

所以这个注释对于函数和它的内部函数是有效的,而不仅仅是下一行。

用户回答回答于

如果将代码修改为以下内容以避免一起使用,也可以达到相同的效果。代码如下:

"use strict";

var obj = {
    f: function() {
        this.prop = 'value';
        g.bind( null, this )();
    }
};

function g(self) {
    console.log( self.prop );
}

所属标签

可能回答问题的人

  • 女淘日记

    杭州吱吱吱科技 · 站长 (已认证)

    1 粉丝1 提问3 回答
  • 朝夕熊博客

    1 粉丝2 提问3 回答
  • o o

    4 粉丝495 提问2 回答
  • 发条丶魔灵1

    9 粉丝525 提问2 回答

扫码关注云+社区

领取腾讯云代金券