相关疑难解决方法(0)

严格违规使用此关键字并显示模块模式

无法获取以下内容以传递jslint/jshint

/*jshint strict: true */
var myModule = (function() {
    "use strict";

    var privVar = true,
        pubVar = false;

    function privFn() {
        return this.test; // -> Strict violation.
    }

    function pubFn() {
        this.test = 'public'; // -> Strict violation.
        privFn.call(this); // -> Strict violation.
    }

    return {
        pubVar: pubVar,
        pubFn: pubFn
    };

}());

myModule.pubFn();
Run Code Online (Sandbox Code Playgroud)

我理解它是由this函数声明中的使用引起的,但是我读过Crockford写的东西,他说违规是为了防止全局变量污染 - 但这里唯一的全局变量就是我明确定义的变量...... myModule.其他所有东西都保存在直接的功能范围内,我应该可以用它this来引用该模块.

任何想法如何让这种模式通过?

更新:如果我使用函数表达式而不是声明,这似乎工作,即

var pubFn = function () { ...
Run Code Online (Sandbox Code Playgroud)

我不是这种格式的粉丝,更喜欢将函数名称和命名参数更接近并且声明看起来/感觉更清晰.老实说,我不明白为什么这会引发违规行为 - 在这种模式中没有理由这样做.

javascript strict module-pattern

53
推荐指数
2
解决办法
2万
查看次数

为什么JSHint在这一行上抛出了"可能的严格违规行为"

试图在JsHint中验证一些Javascript,我得到以下内容:

可能的严格违规:

return ($.event.dispatch || $.event.handle).apply(this, args);
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它会抛出这个错误?

多谢你们

javascript

7
推荐指数
1
解决办法
3423
查看次数

标签 统计

javascript ×2

module-pattern ×1

strict ×1