gpt4 book ai didi

javascript - 期望赋值或函数调用,但看到的是表达式。 (W030)

转载 作者:行者123 更新时间:2023-11-30 14:17:13 25 4
gpt4 key购买 nike

我知道有很多类似的问题,我读了其中的一些。我什至重新阅读了 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!';

但是,听起来您可能想要为每个真值 bool 值递增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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com