JavaScript: Ошибка - "Ожидается присваивание или вызов функции, а вместо этого видели выражение"?

Я использую JSLint, чтобы убедиться, что мой JavaScript "строгий", и я получаю следующую ошибку:

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

На следующий код:

(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);

Есть идеи, почему я получаю такую ​​ошибку? Кроме того, я использую jQuery, как видно из приведенного выше кода, в случае, если это имеет значение.

4 ответа

Решение

Я думаю, что JSLint недоволен, так как вы используете троичный оператор, и вы ничего не делаете со значением. Рефакторинг это в эквивалент:

if (my_var > 0 ) {
  $("#abc").html(my_array.join(''));
} else {
  $("#abc").html('<h2>Hello ' + persons_name);
}

устранит ошибку. Если по какой-то причине вы действительно привязаны к использованию троичного оператора, "правильный" способ его использования будет следующим:

$("#abc").html((my_var > 0) ? my_array.join('') : '<h2>Hello ' + persons_name);

Я считаю, что это потому, что троичный оператор оценивает выражение и возвращает значение, которое, как ожидается, будет назначено. Например:

var test = (my_var > 0) ? true : false;

Однако вы используете его как обычный оператор if/then/else. Хотя троичный оператор выполняет if/then/else, он традиционно используется в присваивателях.

РЕДАКТИРОВАТЬ: В качестве дополнения: это заявление будет иметь смысл для вас?

var foo = 1;
(my_var > 0) ? true : false;
console.log('hello world');

Вы используете выражение (точнее выражение, использующее троичный оператор) в одной строке: ваша строка состоит исключительно из выражения.

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

Просто спросил тот же вопрос, не найдя этого по какой-то причине...

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

Другие вопросы по тегам