年龄比较函数输出异常排查:输入不同结果却始终一致
问题分析与解决
你的函数不管输入什么参数输出都一样,核心问题出在第一个if判断的运算符使用错误:
你写的是 if (age = myAge),这里的=是赋值运算符,它会把myAge的值(27)赋给age变量,然后这个表达式的结果就是27——在条件判断里非零值会被视为true,所以不管你传入的age是多少,这个分支都会被触发,直接返回第一个结果。
要解决这个问题,需要把赋值运算符=改成比较运算符:
- 推荐用
===做严格相等比较(同时比较值和数据类型) - 也可以用
==做宽松相等比较
修正后的代码如下:
function compareAge(name, age) { let myAge = 27; if (age === myAge) { return `${name} is the same age as me.` } else if (age < myAge) { return `${name} is younger than me.` } else { // 前面两个条件不满足时,必然是年龄更大的情况,无需额外判断 return `${name} is older than me.` } } console.log(compareAge('Kat', 2)); // 输出:Kat is younger than me.
内容的提问来源于stack exchange,提问作者Kat Shepil
相关产品推荐
相关产品推荐

