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
заявление, чтобы сделать эту строку более ясной.
Просто спросил тот же вопрос, не найдя этого по какой-то причине...
Тернар возвращает значение, которое не используется, поэтому вы злоупотребляете троичной структурой, не используя значение (даже если вызовы функций выполняются, как предполагалось).