我知道有很多类似的问题,我读了其中一些。我什至再次重读了MDN of the ternary operator,但是我仍然不明白为什么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 */
注释代码。附注:我在文件的第一行(
use strict
语句)遇到了相同的错误,但带有回勾号。怎么解决呢? 最佳答案
您正在滥用条件运算符作为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
}
关于javascript - 期望一个赋值或函数调用,而是看到一个表达式。 (W030),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53389936/