我的问题是:为什么第一个代码不能很好地工作,而第二个代码却可以完美地工作?
第一个代码:
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');
}
}
第二个代码:
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');
}
}
答案 0 :(得分:8)
以2 <= N <= 5
为例,以下两个都返回true:
2 <= 3 <= 5
2 <= 6 <= 5
根据经验,似乎首先评估了左边的第一个不等式,在两种情况下都是如此。然后发生以下情况:
true <= 5
true <= 5
其实际评估为:
1 <= 5
1 <= 5
两者都是正确的。因此,在第二个示例中,即使您希望逻辑上为假,您也会得到一个假标志true。
在实践中,第二个代码段是如何用JavaScript和大多数其他语言编写这样的不等式。