Подтвердить что ты не робот

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

Мне очень нравится эта ошибка 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};
4b9b3361

Ответ 1

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

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

Ответ 2

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

/* jshint -W030 */

Вы можете прочитать об этом здесь.

Ответ 3

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

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

NB: dummy после этого выполняет true.

Другим обходным решением может быть:

function expression(statement) { 
 'use strict';
 return statement; 
}
expression(v && arr.push);