2016-09-25 5 views
0

jslint не нравится this.Как передать jslint и передать глобальную переменную на мой IIFE?

}(this)); 

но это как передать глобальную переменную на мой IIFE, который работает как на клиенте, так и на сервере.

Как его изменить?

Я хочу передать jslint без параметров.

+0

Просто добавьте '// jshint ignore: line' в конец строки? – ivarni

+0

Найдите [лучше linter] (http://eslint.org). –

ответ

1

Это требует прыгать через справедливое числа обручей, но вы можете определить эту функцию, которая проходит JSLint и возвращает ссылку на глобальный объект:

function getGlobal() { 
    // just creating a function here so that we can get at the Function constructor 
    // via noop.constructor 
    var noop = function() { 
     // dummy statements so the linter doesn't complain about an 
     // empty block or unused variables 
     var a = null; 
     return a; 
    }; 

    return noop.constructor("return this")(); 
} 

Заметим, что эта функция сама не делает необходимость которые будут определены в глобальном масштабе. Вы можете определить его и называть его в своем IIFE.

+0

Знаете ли вы, что причина «ошибки» я получаю случайно? –

+0

@mikeyballs Дуглас Крокфорд препятствует использованию «этого», потому что он непредсказуем и может выявлять дыры в безопасности. Он говорил об этом, по крайней мере, в одном из своих разговоров, возможно, больше. Я не мог найти одного из них, но вот кто-то еще говорит о том, почему бы не «this': https://nemisj.com/js-without-new-and-this/ – JLRishe

+0

Итак, есть некоторые стили JavaScript-программирования, которые не использовать 'this' вообще? –

Смежные вопросы