If/Else语句返回误报

If/Else Statement Returning false positives

本文关键字:返回 语句 Else If      更新时间:2023-09-26

在我的代码中,我有一个if/else语句来处理数字和字母都返回cont = false的情况。我试着只运行这个代码,结果是一样的。显然,它应该执行else语句中的代码。有人有什么想法吗?

var input = prompt()
if (input == null || " ") {
  //Cont determines whether or not to continue
  console.log("cont = false");
  var cont = false;
}else{
  console.log("cont = true");
  var cont = true;
}

因为代码不是检查一个输入与两个值的方式。

if ( input == null || " " )

应该是

if (input==null || input == " ")
input == null || " "

计算结果为(比较结果(||"。现在,由于"(非空字符串(是一个truthy值,因此它总是计算为true。

评估顺序:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

添加到其他回复中,这些回复都是关于||运算符和优先级的正确回复。

在大多数情况下,使用==不是一件好事,尤其是因为0 == null等-如果你正在检查它是否真的是null或空字符串,那么这样的东西更安全:

if (input === null || input.trim() === "") {
...

这会检查类型和内容,因此不能给出误报。不过,如果输入不是字符串,它会抱怨。

非常感谢!作为迄今为止收到的所有答案的总结:

  • OR运算符(||(将input == null" "进行比较,后者的计算结果总是为true
  • ===优于==

再次感谢您的帮助和支持!