首页 > 解决方案 > 为什么我的比较没有产生预期的结果?

问题描述

我希望这会输出“失败”,而是输出“优秀”,即使正在比较的值与该比较不匹配。

我的代码有什么问题?

let grade = 99;
if(140 <= grade <= 150) {
  console.log('Excellent');
}
else if(100 <= grade) {
  console.log('Very Good');
}
else if(grade < 100) {
  console.log('Failed');
}

标签: javascriptif-statement

解决方案


这不是进行多重比较的方式:

if (140 <= grade <= 150)

在这种情况下,前半部分将评估为trueor false,其余部分将是类似的东西true <= 150,这没有什么意义。

相反,与其从直觉的角度来思考,不如从逻辑运算的组合来思考。您想要的两个操作是:

  • 140 <= grade
  • grade <= 150

将它们与“and”运算符结合起来:

if (140 <= grade && grade <= 150)

结果:

let grade = 99;
if (140 <= grade && grade <= 150) {
  console.log('Excellent');
} else if(100 <= grade) {
  console.log('Very Good');
} else if(grade < 100) {
  console.log('Failed');
}


推荐阅读