在 JavaScript 中,一元减号运算符(-
)用于对操作数的值取反。
1. 数字类型 - 直接取反:
console.log(-42); // -42
console.log(-3.14); // -3.14
2.字符串类型 - 若字符串是有效数字,转换为数字后取反:
console.log(-"123"); // -123
console.log(-"12.3"); // -12.3
3.布尔类型 - true
转为 1
,false
转为 0
:
console.log(-true); // -1
console.log(-false); // -0
4.对象类型 - 调用 valueOf()
→ toString()
转换为原始值,再取反:
const obj = { valueOf: () => 42 };
console.log(-obj); // -42const obj2 = { toString: () => "100" };
console.log(-obj2); // -100const obj3 = {}; // 默认转换为 "[object Object]" → NaN
console.log(-obj3); // NaN
5.null 和 undefined - null
转为 0
,undefined
转为 NaN
:
console.log(-null); // -0
console.log(-undefined); // NaN
6.BigInt 类型 - 支持直接取反:
console.log(-5n); // -5n
注意事项
- NaN 结果:若操作数无法转换为有效数字,结果为
NaN
。 - 对象转换:依赖对象的
valueOf
和toString
方法,需确保逻辑可控。