Возникли проблемы с передачей следующего кода 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 () { ...
Я не фанат этого формата, но предпочитаю, чтобы имя функции и именованные параметры были ближе, а объявление выглядит / кажется более чистым . Честно говоря, я не понимаю, почему это является нарушением - в этом шаблоне нет причин для этого.