隐式类型转换有哪些容易踩坑的规则?
参考答案
判断条件首先把值转换为布尔值。空数组和空对象都是真值,空字符串、0、NaN、null、undefined 等是假值。字符串 "0" 也是真值,因此不能用是否为空代替数字是否合法。
加号既可以表示数值相加,也可以拼接字符串:操作数转换为原始值后,只要一侧是字符串就进行拼接。减号等算术运算通常要求数值;对象转换涉及 Symbol.toPrimitive、valueOf、toString。
接收表单输入时先明确解析规则,再验证结果,例如 Number.isFinite。Number('') 是 0,parseInt('12px', 10) 是 12,这两种行为可能都不符合业务要求。应把允许的输入格式作为验证规则,而不是依赖宽松转换。
可运行示例
JavaScript
console.log(Boolean([]));
console.log(Boolean("0"));
console.log(Number(""));
console.log(parseInt("12px", 10));
输出依次为:true、true、0、12。