如何将数字转为相反数?我的JavaScript代码为何未达预期?
为啥
Math.abs()没法得到相反数? 嘿,这个小坑很多刚接触JS的同学都踩过,咱们来捋清楚~
你最开始写的箭头函数const opposite = number => -number完全正确,因为相反数的本质就是给原数乘以-1:正数变负,负数变正,0还是0。
但你后来写的Math.abs(number),它的功能是返回数字的绝对值——简单说就是把负数转正数,正数保持不变,0还是0。比如:
Math.abs(1)→ 1(和原数一样,不是相反数)Math.abs(-3)→ 3(是原数的绝对值,不是相反数)
所以你忽略的核心点就是:Math.abs()的作用是“去掉负号”,而不是“反转符号”。这俩功能完全不一样!
如果非要用Math.abs()来实现相反数(虽然没必要,直接-number更简洁),得结合原数的符号来调整:
function opposite(number) { // 如果原数是正数,返回负的绝对值;如果是负数/0,返回绝对值 return number > 0 ? -Math.abs(number) : Math.abs(number); }
但显然,直接用return -number是最直接高效的写法,没必要绕这个弯~
内容的提问来源于stack exchange,提问作者Thomas_da_tank
相关产品推荐
相关产品推荐

