Ожидал присваивания или вызова функции и вместо этого увидел выражение - PullRequest
34 голосов
/ 02 марта 2012

Я совершенно клевый с этой 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;
};

в минификатор он все равно сводится к этому:

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

Ответы [ 4 ]

75 голосов
/ 02 марта 2012

Я не думаю, что JSLint имеет опцию, чтобы отключить это.

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

36 голосов
/ 28 мая 2014

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

/ * jshint -W030 * /

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

9 голосов
/ 02 марта 2012

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

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

Примечание: dummy оценивается как true после этого.

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

function expression(statement) { 
 'use strict';
 return statement; 
}
expression(v && arr.push);
2 голосов
/ 17 декабря 2018

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

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

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

* 1007.*
...