Ожидал присвоения или вызова функции, а вместо этого увидел выражение

Меня полностью устраивает эта JSLint ошибка. Как я могу это терпеть? Есть ли для этого флажок или флажок?

Вы понимаете это, когда делаете что-то вроде:

v && arr.push(v);

в отличие от:

if (v) {
    arr.push(v);
}

Оба делают одно и то же. Если поставить:

window.test = function(v) {
    'use strict';
    var arr = [];
    if (v) {
        arr.push(v);
    }
    return arr;
};

в minifier он все равно сводится к следующему:

window.test=function(a){var b=[];a&&b.push(a);return b};

person ryanve    schedule 02.03.2012    source источник


Ответы (4)


Я не думаю, что у JSLint есть возможность отключить это.

Однако JSHint (вилка с дополнительными параметрами) имеет для нее параметр: параметр expr, задокументированный как "если ExpressionStatement должен быть разрешен как Программы ».

person T.J. Crowder    schedule 02.03.2012
comment
@diEcho: вы также можете скачать и использовать его локально (это то, что я делаю). Я запускаю его через NodeJS с установленными мной предпочтительными параметрами, резко помогает мне в правильности кода. :-) - person T.J. Crowder; 02.03.2012
comment
Можете подробнее рассказать, почему произошло это предупреждение? - person Mohammad Kermani; 04.10.2016

Вы можете добавить следующую строку, чтобы игнорировать это предупреждение:

/ * jshint -W030 * /

Подробнее об этом можно узнать здесь.

person ReedD    schedule 28.05.2014
comment
Ответ совершенно не связан с вопросом, который касался JSLint, а не JSHint. - person Arseni Mourzenko; 02.02.2015
comment
Тем не менее, это все еще самый полезный ответ для большинства людей, которые здесь приземляются. - person Charlie Martin; 19.03.2015
comment
совершенно не связаны? Потому что JSHint совершенно не связан с JSLint? - person iconoclast; 18.12.2015

Люди, которые ищут способы подавить это при использовании ESLint. Вы можете игнорировать его, написав следующий комментарий чуть выше строки no-unused-expressions

// eslint-disable-next-line no-unused-expressions

Вы также можете подавить предупреждение для всего файла, разместив следующий комментарий в самом верху файла

/* eslint-disable no-unused-expressions */
person Shivam    schedule 17.12.2018
comment
Я рекомендую вам также предоставить ссылку на документацию по этому конкретному правилу no-unused -выражения - person johannchopin; 08.04.2020

В JSLint нет возможности для этого. Вы можете обойти его, используя:

var dummy = v && arr.push(v);

NB: dummy после этого оценивается как true.

Другой способ обхода проблемы:

function expression(statement) { 
 'use strict';
 return statement; 
}
expression(v && arr.push);
person KooiInc    schedule 02.03.2012
comment
Это сработает, но это глупо. Минификатор на самом деле разберется с этим, но для удобства чтения было бы лучше просто использовать оператор if, чем этот IMO. - person ryanve; 02.03.2012
comment
Это правда. Но вы просили, как терпеть это. Добавлен еще один обходной путь. Это похоже на то, как где-то сказал Крокфорд: jsLint разработан, чтобы быть занозой в заднице для программистов; ~) - person KooiInc; 02.03.2012
comment
НЕПРАВИЛЬНО замечательный && хак не работает в jsLint ... может быть, зависит от версии ... - person faeb187; 12.02.2016