Но эти функции не объявлены в глобальном коде. Они вложены в выражение вашей функции (которое вы используете для переноса кода вашего модуля).

кли проблемы при получении следующего, чтобы передать 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 () { ...

Я не фанат этого формата, хотя предпочитаю, чтобы имя функции и именованные параметры были ближе, а объявление выглядит / выглядит чище. Честно говоря, я не понимаю, почему это вызывает нарушение - в этом паттерне нет причин.