非常基本的 JavaScript,使用 || 检查条件(或)

Really basic javascript, checking a condition using || (or)

本文关键字:检查 条件 使用 JavaScript 非常      更新时间:2023-09-26

我对JavaScript很陌生,并且试图使用 lynda.com 来学习。

我目前正在玩 if 语句。

有问题的代码:

var value = prompt("1 or 2?");
if ( value == 1 ) {
    alert("You have chosen 1.");
} 
if ( value == 2 ) {
    alert("You have chosen 2.");
}   
if ( value != (1 || 2) ) {
    alert("Invalid number. Try again.");
}

这就是我想要发生的:如果数字不是 1 或 2,我希望 JS 执行这段代码:

 if ( value != (1 || 2) ) {
    alert("Invalid number. Try again.");
}
显然这不是写

出来的正确方法,我尝试过用各种不同的方式写它。有人可以告诉我正确的方法,可能使用 else 语句吗?

if ( value != 1 && value != 2) {
    alert("Invalid number. Try again.");
}

如果你写value != (1||2)(1||2)将首先被评估为1,然后与value进行比较,所以你有效地写了:

if ( value != 1 ) { [...] }.

这是因为()的偏好高于!=。您还可以阅读有关操作员首选项的解释,其中提供了更多详细信息。

1

if ( value != 1 && value !=2 ) {
    alert("Invalid number. Try again.");
}

阿拉伯数字

 if ( !(value == 1 || value ==2) ) {
    alert("Invalid number. Try again.");
}

3

if ( value == 1 ) {
    alert("You have chosen 1.");
} 
else if ( value == 2 ) {
    alert("You have chosen 2.");
}   
else {
    alert("Invalid number. Try again.");
}

编写此语句的最佳方法如下:

if ( value == 1 )
{
  alert("1");
}
else if ( value == 2 )
{
  alert("2");
}
else
{
  alert("no 1 or 2");
}

您搞砸的 if 语句是 (1 || 2(将发生的情况是它将进行布尔测试并返回 1。它应该看起来像这样

if ( value !== 1 && value !== 2 )
{
  alert("no 1 or 2");
}

谢谢

如前所述,最好是分成两个 NOT 语句,并同时评估:

if ( value != 1 && value != 2) ) {
    alert("Invalid number. Try again.");
}

但是,您也可以使用 ifelse if else 模式来覆盖所有其他输入(字母、标点符号、空格等(。 else在最后起到了包罗万象的作用:

var value = prompt("1 or 2?");
if ( value == 1 ) {
    alert("You have chosen 1.");
} 
else if ( value == 2 ) {
    alert("You have chosen 2.");
}   
else {
    alert("Invalid number. Try again.");
}

内联语句,例如: (1 || 2)仅在左侧为假 y 时才计算||的右侧。所以你的陈述实际上是在说:

if ( value != 1 )

因为1计算结果为真。

正如大多数人所指出的,您真正想做的是:

if ( value != 1 && value != 2 )

逻辑不正确。你必须以这种方式做

if ( value != 1 && value != 2) ) {
    alert("Invalid number. Try again.");
}

(1||2)语句被评估为1因此您正在测试是否value != 1

尝试过写作

if(value != 1 && value != 2)

你必须这样做

if ( value != 1 && value != 2 ) {
    alert("Invalid number. Try again.");
}

if (!(value == 1 || value == 2)) {
    alert("Invalid number. Try again.");
}

您可以按如下方式使用 switch

switch(value) {
  case 1:
    alert("You have chosen 1.");
    break;
  case 2:
    alert("You have chosen 2.");
    break;
  default:
    alert("Invalid number. Try again.");
}

你的问题在这里:

if ( value != (1 || 2) )

他们正在做的是检查"值"是否不等于(1或2(,其中(1或2(首先被评估,因为它在括号中。(1 或 2( 的计算结果为 1,因为 1 在 JavaScript 中是真实的。您的代码实际执行的操作是检查您的值是否不等于 1。

您真正要做的是检查您的值是否为 !=1 并且您的值是否为 !=2。你这样做是这样的:

if (value !=1 && value !=2) { /* do something */ }

你不需要子句。 您可以只使用:

else{
}