使用JavaScript箭头函数实现三数取最大值的代码正确性咨询
代码正确性分析
你的这段代码存在逻辑漏洞,并非完全正确。
问题所在
当x <= y时,代码直接返回y,但没有判断z是否大于y。比如调用fu(5,10,15),按照代码逻辑会返回10,但实际最大值是15,这就出现错误了。
修正后的代码
你需要在else分支里再增加一层对y和z的比较:
const fu = (x, y, z) => { if (x > y) { if (x > z) return x; else return z; } else { if (y > z) return y; else return z; } } console.log(fu(10,14,9)); // 输出14,正确 console.log(fu(5,10,15)); // 输出15,正确
更简洁的写法(可选)
如果不想嵌套太多if-else,也可以直接利用JS内置的Math.max()方法,一行搞定:
const fu = (x, y, z) => Math.max(x, y, z);
内容的提问来源于stack exchange,提问作者ApZa
相关产品推荐
相关产品推荐

