期望赋值或函数调用,但看到的是表达式。 (W030)
Expected an assignment or function call and instead saw an expression. (W030)
我知道有很多类似的问题,我看了其中的一些。我什至重新阅读了 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 */
注释来注释代码。
P.S.: 我在文件的第一行遇到了同样的错误,即 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
}
我知道有很多类似的问题,我看了其中的一些。我什至重新阅读了 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 */
注释来注释代码。
P.S.: 我在文件的第一行遇到了同样的错误,即 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
}