Javascript тернарный оператор if, присвоение его переменной и увеличение - PullRequest
3 голосов
/ 05 мая 2020

Итак, у меня есть этот фрагмент кода, который действительно работает: (ha sh мог бы быть таким объектом: {"bob" => "12," Roger "=>" 15 "и т. Д.} И isGood (key) - это вызов функции isGood, которая просто возвращает, если игрок хороший или плохой)

let score = 0;
Object.keys(hash).forEach((key) => {
  isGood(key) === true ? score += parseInt(hash[key], 10) : score -= parseInt(hash[key], 10);
});
return score;

, для которого я получаю это сообщение об ошибке:

Expected an assignment or function call and instead saw an expression

И мне удалось чтобы заставить его работать, не получая этого сообщения об ошибке, например:

let score = 0;
Object.keys(hash).forEach((key) => {
  score = isGood(key) ? score + parseInt(hash[key], 10) : score - parseInt(hash[key], 10);
});
return score;

Но почему первый способ не является правильным способом сделать это, даже если он работает? Я сожалею, что у меня проблемы с соглашениями в Javascript. Заранее спасибо! Olivier

1 Ответ

1 голос
/ 05 мая 2020

Действует код JavaScript. Я полагаю, что сообщения об ошибках поступают из jshint, который является линтером.

Вот связанный ответ: Тернарный оператор отображает ошибку в JSHint - Ожидается назначение или вызов функции, а вместо этого отображается выражение

В конце концов, это вопрос стиля, но наличие побочных эффектов в тернарном операторе является неожиданным, что объясняет, почему у линтера есть правила, указывающие на него. Это усложняет рассуждение о коде, поэтому вы обычно видите вместо этого конструкцию if-then-else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...