Javascript 中的多个不同条件
Multiple and different conditions in Javascript
我逻辑有问题。
如果数字 大于 0 且 小于 10 且 数字为 11 且 number is 22 做某事。 (1、2、3、4、5、6、7、8、9、11 或 22)。
如果数字 大于 10 但 不是 11 或者 不是 22,做点别的。 (10, 12, 13 ....20, 21, 23, 24...)
我只需要处理 11,但我不知道如何使用 22 插入另一个条件。
if (n >= 0 && n < 10) || (n == 11 && n == 22) {
do something
} else if (n >= 10 && n != 11) && (n != 22) {
do something else
}
你的第一个条件永远不会成功,因为你不能有一个大于 0 且小于 10 的数字并且这个相同的数字等于 11 并且也等于 22(在这两种情况下,它会更多超过 10).
if ((n > 0 && n < 10) || n == 11 || n == 22) {
// my number is 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
} else {
// my number is almost everything except the values from above
}
根据您的 (1, 2, 3, 4, 5, 6, 7, 8, 9, 11 或 22) 示例,这听起来像是您想要的?
if ((n > 0 && n < 10) || n == 11 || n == 22) {
// do something
} else if (n >= 10) {
// do something else
}
编辑:添加了我忽略的 else if (n >= 10)
看看文档,别搞混了logicial AND (&&
) and logical OR(||
).
function check(n) {
if((n >= 1 && n <= 9) || (n == 11 || n == 22)) {
console.log(n, true);
} else if(n >= 10) {
console.log(n, false);
}
}
check(1) // true
check(11) // true
check(22) // true
check(0)
check(10) // false
check(12) // false
check(21) // false
check(23) // false
只做比较,因为higher precedence of logical AND &&
over logical OR ||
,不需要括号。
if (n >= 0 && n < 10 || n === 11 || n === 22) {
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
// do something
} else {
// 10, 12, 13 ... 21, 23 ...
// do something
}
尝试(n >= 1 && n <= 9) || n == 11 || n == 22
,这将检查数字是否在 1 到 9 之间(包括 1 到 9)OR 它是11 OR 22.
然后,在您的 else if 中,只需检查 >= 10 - 小于 1 的数字,例如0,也不会触发else。
if ((n >=1 0 && n <= 9) || n == 11 || n == 22) {
do something
} else if (n >= 10) {
do something else
}
使用 >= 和 <= 可以更清楚地了解您要查找的值,否则需要一些额外的心理负担才能意识到 n > 0 && n < 10
真正意味着值 1 到 9。
此外,它是 JavaScript 并且数字可以是整数或浮点数,因此大于零可以是 0.1 等。
在你的 if 语句中,你说:
n 大于或等于 0 且 n 小于 10
要么
n 等于 11 且 n 等于 22
这意味着,对于 0 到 9(含)之间的数字或 11 和 22 之间的数字,if 块将 运行。因此数字可以在 0 到 9 之间,也可以是11 和 22 都是不可能的。
我对 if 语句的看法:
if (n >= 1 && n <= 9 || n == 11 || n == 22) {
do something;
}
这样,您就不会混淆包含编号和排除编号,并确保允许使用 11 或 22。
第二个块将 运行 用于大于或等于 10 且不等于 11 且不等于 22 的数字。这很好。
else if (n >= 10 && n != 11 && n != 22) {
do something else;
}
在这个答案中,我假设您不想完全跳过 10。如果您这样做,那么在第二个语句中,您将检查 n > 10
.
从逻辑上讲,这是合理的。但是,我认为您不需要在第二个中检查 11 和 22,因为 if 块将首先 运行 如果数字是 11 或 22,第一个 if 块将 运行.所以第二个不需要考虑它们。
你快到了。
要测试 1、2、3、4、5、6、7、8、9、11 或 22:
if (n >= 0 && n < 10) || (n == 11 && n == 22) {
至少可以更改为:
if ((n > 0 && n < 10) || (n == 11 || n == 22)) {
三个重要的变化是:
- 平衡括号以构建适当的
if( )
结构。
>= 0
变为 > 0
以达到 高于零 的要求。
- 最后的
&&
变为||
。
这也改变了运算顺序,因此在这种情况下我们实际上根本不需要任何额外的括号。这也恰好是正确的,而且更简单:
if (n > 0 && n < 10 || n == 11 || n == 22) {
...因为 &&
的优先级高于 ||
并且比较器(>
、<
和 ==
)的优先级高于条件(&&
和 ||
)。
此时您不需要 else if
条件。只需 else
就足够了。 11
和 22
由 if
的肯定情况处理,因此 n
不会是 else
情况下的任何一个。
最终产品:
if (n > 0 && n < 10 || n == 11 || n == 22) {
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
} else {
// Something else. :)
}
我逻辑有问题。 如果数字 大于 0 且 小于 10 且 数字为 11 且 number is 22 做某事。 (1、2、3、4、5、6、7、8、9、11 或 22)。
如果数字 大于 10 但 不是 11 或者 不是 22,做点别的。 (10, 12, 13 ....20, 21, 23, 24...)
我只需要处理 11,但我不知道如何使用 22 插入另一个条件。
if (n >= 0 && n < 10) || (n == 11 && n == 22) {
do something
} else if (n >= 10 && n != 11) && (n != 22) {
do something else
}
你的第一个条件永远不会成功,因为你不能有一个大于 0 且小于 10 的数字并且这个相同的数字等于 11 并且也等于 22(在这两种情况下,它会更多超过 10).
if ((n > 0 && n < 10) || n == 11 || n == 22) {
// my number is 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
} else {
// my number is almost everything except the values from above
}
根据您的 (1, 2, 3, 4, 5, 6, 7, 8, 9, 11 或 22) 示例,这听起来像是您想要的?
if ((n > 0 && n < 10) || n == 11 || n == 22) {
// do something
} else if (n >= 10) {
// do something else
}
编辑:添加了我忽略的 else if (n >= 10)
看看文档,别搞混了logicial AND (&&
) and logical OR(||
).
function check(n) {
if((n >= 1 && n <= 9) || (n == 11 || n == 22)) {
console.log(n, true);
} else if(n >= 10) {
console.log(n, false);
}
}
check(1) // true
check(11) // true
check(22) // true
check(0)
check(10) // false
check(12) // false
check(21) // false
check(23) // false
只做比较,因为higher precedence of logical AND &&
over logical OR ||
,不需要括号。
if (n >= 0 && n < 10 || n === 11 || n === 22) {
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
// do something
} else {
// 10, 12, 13 ... 21, 23 ...
// do something
}
尝试(n >= 1 && n <= 9) || n == 11 || n == 22
,这将检查数字是否在 1 到 9 之间(包括 1 到 9)OR 它是11 OR 22.
然后,在您的 else if 中,只需检查 >= 10 - 小于 1 的数字,例如0,也不会触发else。
if ((n >=1 0 && n <= 9) || n == 11 || n == 22) {
do something
} else if (n >= 10) {
do something else
}
使用 >= 和 <= 可以更清楚地了解您要查找的值,否则需要一些额外的心理负担才能意识到 n > 0 && n < 10
真正意味着值 1 到 9。
此外,它是 JavaScript 并且数字可以是整数或浮点数,因此大于零可以是 0.1 等。
在你的 if 语句中,你说:
n 大于或等于 0 且 n 小于 10 要么 n 等于 11 且 n 等于 22
这意味着,对于 0 到 9(含)之间的数字或 11 和 22 之间的数字,if 块将 运行。因此数字可以在 0 到 9 之间,也可以是11 和 22 都是不可能的。
我对 if 语句的看法:
if (n >= 1 && n <= 9 || n == 11 || n == 22) {
do something;
}
这样,您就不会混淆包含编号和排除编号,并确保允许使用 11 或 22。
第二个块将 运行 用于大于或等于 10 且不等于 11 且不等于 22 的数字。这很好。
else if (n >= 10 && n != 11 && n != 22) {
do something else;
}
在这个答案中,我假设您不想完全跳过 10。如果您这样做,那么在第二个语句中,您将检查 n > 10
.
从逻辑上讲,这是合理的。但是,我认为您不需要在第二个中检查 11 和 22,因为 if 块将首先 运行 如果数字是 11 或 22,第一个 if 块将 运行.所以第二个不需要考虑它们。
你快到了。
要测试 1、2、3、4、5、6、7、8、9、11 或 22:
if (n >= 0 && n < 10) || (n == 11 && n == 22) {
至少可以更改为:
if ((n > 0 && n < 10) || (n == 11 || n == 22)) {
三个重要的变化是:
- 平衡括号以构建适当的
if( )
结构。 >= 0
变为> 0
以达到 高于零 的要求。- 最后的
&&
变为||
。
这也改变了运算顺序,因此在这种情况下我们实际上根本不需要任何额外的括号。这也恰好是正确的,而且更简单:
if (n > 0 && n < 10 || n == 11 || n == 22) {
...因为 &&
的优先级高于 ||
并且比较器(>
、<
和 ==
)的优先级高于条件(&&
和 ||
)。
此时您不需要 else if
条件。只需 else
就足够了。 11
和 22
由 if
的肯定情况处理,因此 n
不会是 else
情况下的任何一个。
最终产品:
if (n > 0 && n < 10 || n == 11 || n == 22) {
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
} else {
// Something else. :)
}