无法获取以下内容以传递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)
我不是这种格式的粉丝,更喜欢将函数名称和命名参数更接近并且声明看起来/感觉更清晰.老实说,我不明白为什么这会引发违规行为 - 在这种模式中没有理由这样做.
试图在JsHint中验证一些Javascript,我得到以下内容:
可能的严格违规:
return ($.event.dispatch || $.event.handle).apply(this, args);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它会抛出这个错误?
多谢你们