以下を取得して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();
関数宣言での使用が原因であることは理解していますがthis
、クロックフォードが書いたものを読んだところ、違反はグローバル変数の汚染を防ぐためのものだと彼は言いました-しかし、ここで唯一のグローバル変数は私が明示的に定義しているものです... myModule
. 他のすべては即時関数スコープに保持されthis
、モジュールを参照するために使用できるはずです。
このパターンを通過させる方法はありますか?
更新:宣言の代わりに関数式を使用すると、これは機能するようです。
var pubFn = function () { ...
私はこのフォーマットのファンではありません. 正直なところ、これが違反をスローしている理由がわかりません。このパターンには理由がありません。