我的问题是:为什么第一个代码不能很好地工作,但第二个代码完美无缺?
第一个代码:
function oddOrEven(N) {
if (N % 2 == 1) {
console.log('Weird');
} else if (2 <= N <= 5) {
console.log('Not Weird');
} else if (6 <= N <= 20) {
console.log('Weird');
} else if (N > 20) {
console.log('Not Weird');
}
}Run Code Online (Sandbox Code Playgroud)
第二个代码:
function oddOrEven(N) {
if (N % 2 == 1) {
console.log('Weird');
} else if (N >= 2 && N <= 5) {
console.log('Not Weird');
} else if (N >= 6 && N <= 20) {
console.log('Weird');
} else if (N > 20) {
console.log('Not Weird');
}
}Run Code Online (Sandbox Code Playgroud)
以2 <= N <= 5为例,以下两个回真:
2 <= 3 <= 5
2 <= 6 <= 5
Run Code Online (Sandbox Code Playgroud)
根据经验,似乎首先评估左边的第一个不等式,这在两种情况下都是正确的.然后发生以下情况:
true <= 5
true <= 5
Run Code Online (Sandbox Code Playgroud)
真的评价为:
1 <= 5
1 <= 5
Run Code Online (Sandbox Code Playgroud)
两者都是真的.因此,在第二个示例中,您会得到一个错误的标志,即使您希望它在逻辑上是错误的.
在实践中,您的第二个代码片段是如何在JavaScript和大多数其他语言中编写这样的不等式.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |