Ожидал присваивания или вызова функции и вместо этого увидел выражение. (W030) - PullRequest
0 голосов
/ 20 ноября 2018

Я знаю, что есть много подобных вопросов, и я прочитал некоторые из них. Я даже перечитал MDN троичного оператора снова, но я все еще не понимаю, почему JSHint показывает мне вышеупомянутую ошибку для следующего кода:

passHasNumber ? strength++ :
        passHasTwoNumbers ? strength++ :
        passHasCapitalLetter ? strength++ :
        passHasTwoCapitalLetters ? strength++ :
        passHasWhitespace ? strength++ :
        passHasSymbols ? strength++ :
        passVeryBad.innerHTML = `Only lowercase letters, huh?
        You can do better than that!`; // error appears here

Я предпочитаю не иметь код с ошибками, поэтому я был бы признателен за то, чтобы этот код был как можно более чистым; Я не люблю комментировать код с комментарием /* jshint -W030 */.

P.S .: Я получаю ту же ошибку в первой строке моего файла, которая является оператором use strict, но с обратными галочками. Как это решить?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы злоупотребляете условным оператором как оператором if - JSHint видит осиротевшее выражение и жалуется на него. Используйте if / else вместо:

if (passHasNumber || passHasTwoNumbers || passHasCapitalLetter || passHasTwoCapitalLetters || passHasWhitespace || passHasSymbols) {
  strength++;
} else {
  passVeryBad.innerHTML = `Only lowercase letters, huh?
  You can do better than that!`; // error appears here
}

Вы должны использовать условный оператор только тогда, когда вам нужно использовать выражение , в котором оно оценивается как , например:

const foo = condition ? 'foo' : 'error!';

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

const strength = passHasNumber + passHasTwoNumbers + passHasCapitalLetter + passHasTwoCapitalLetters + passHasWhitespace + passHasSymbols;
if (strength === 0) {
  passVeryBad.innerHTML = `Only lowercase letters, huh?
  You can do better than that!`; // error appears here
}
...