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

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

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

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

В следующем коде:

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

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

4b9b3361

Ответ 1

Мое предположение было бы в том, что 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);

Ответ 2

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

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

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

EDIT: В качестве дополнения: будет ли это утверждение иметь для вас смысл?

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

Ответ 3

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

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

Ответ 4

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

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