Как заставить JSLint переносить ведущую точку с запятой? - PullRequest
9 голосов
/ 17 августа 2011

Программное обеспечение для непрерывной интеграции, которое я использую, запускает файлы JavaScript через JSLint и жалуется, если они терпят неудачу (используя настройки JSLint по умолчанию, которые появляются).

Я всегда добавлял ; к началу моего jQueryплагины, поэтому их объединение не приводит к чему-то вроде этого ...

common.js

У меня нет доступа к этому файлу, и я не могу использовать точку с запятой вконец.

var abc = function() {
    alert(arguments[0]);
}

plugin.js

Это мой файл, объединенный с common.js.Он добавляется прямо в конец common.js.

(function($) {
    $.fn.somePlugin = function() {}
})(jQuery);

jsFiddle проблемы, которую это может вызвать.

jsFiddle решение (начальная точка с запятой моего плагина).

Однако JSLint жалуется с ...

Ошибка:

Проблема в строке 1, символ 1: Неожиданнопробел между '(начало)' и ';'.

;(function($) {

Проблема в строке 1, символ 1: Ожидается ';'в столбце 5, а не в столбце 1.

;(function($) {

Проблема в строке 1, символ 2: отсутствует пробел между ';'и '('.

...

Я попытался использовать вместо этого оператор взрыва (!) и несколько других альтернатив, но JSLint все еще жаловался.

Что я могу сделать, чтобы эта сеть безопасности и прошла JSLint?

Ответы [ 3 ]

6 голосов
/ 17 августа 2011

Патч JSLint не против. Все выиграют.

0 голосов
/ 17 августа 2011

Возможно, легкомысленный ответ, но ваш HTML, вероятно, может сделать это:

<script src="common.js"></script>
<script>;</script>
<script src="plugin.js"></script>

Или, если вам не нравится встроенный скрипт во второй строке, создайте файл с именем semicolon.js и, ну, вы знаете ....

Извините, если это смешно, но JSLint не любит простое старое пустое выражение в отдельной строке . Несколько неудачно. Ну хорошо.

Кстати, потрясающая скрипка. Наблюдение за тем, как запускается оповещение из-за пропущенной точки с запятой после объявления функции var, типа «вау», что вы знаете? Эта функция была вызвана как надо! Очень интересно.

0 голосов
/ 17 августа 2011

Что произойдет, если вы поместите ; в строку самостоятельно или добавите другое синтаксически правильное, но бессмысленное утверждение, подобное этому:

"begin plugin";
(function() { // etc

РЕДАКТИРОВАТЬ: как насчет использования void:

void("begin plugin");
(function() { // etc

//or

void(
(function() { /* your code */ })()
);

РЕДАКТИРОВАТЬ 2: как насчет этого варианта:

if (console && console.log) { // or if (false)?
  console.log("Begining plugin definition");
}
(function { // etc
...