Когда я сталкиваюсь с этим, я думаю, что обычно обманываю. В контексте браузера, например, все глобальные переменные действительно живут на window
объекта, так что вы можете сделать что-то вроде этого:
/*jslint sloppy:true, white:true, browser:true */
window.myGlobal = (function (my) {
'use strict';
return my;
}(window.myGlobal|| {}));
Это логически сводится к тому же, и делает JSLint счастливым.
Быстрое редактирование: альтернативно, хотя это по сути один и тот же трюк сначала (и это звучит так, как будто это потенциально то, что вы уже пытаетесь настроить с помощью myGlobal
), рассмотрите группировку ваших глобалов в пространства имен, которые вы определяете как глобальные , как это ...
/*jslint sloppy:true, white:true, browser:true */
/*global MyNamespace */
MyNamespace.myGlobal = (function (my) {
'use strict';
return my;
}(MyNamespace.myGlobal|| {}));
Хотя это своего рода аналогичная ситуация. Если вы не можете быть абсолютно уверены, что у вас есть определение MyNamespace
где-то раньше, вы находитесь в той же лодке, в которой вы сейчас пытаетесь проверить наличие MyNamespace
.
Таким образом, быстрый ответ сводится к трюку window
, выше.
[Скажи JSLint игнорировать код] (http://stackoverflow.com/questions/599859/jslint-control-comments-selective-ignore) –
мог объявить и установить отдельно: 'вар myGlobal; myGlobal = ((...) (myGlobal || {})); ' –
@JonathanLonowski: Это просто эквивалентно' var myGlobal; myGlobal = ((...) ({})); '? – hugomg