判断变量数据类型
let a = '1'
a.constructor === String // -> true
判断变量为空
- 后端不返回数值类型的参数(统一为字符串),前端进行数值计算时通过decimal.js库转换后再进行,同时解决空值判断和浮点运算问题
- 增加数值0、-0的判断
let a = -0
!a === true // undefined、null、NaN、false、''、0、-0 => true
a === 0 // true
设置对象的自动转换规则
- 优先使用[Symbol.toPrimitive]方法进行转换,当有该方法时不再调用其它方法。
- 没有[Symbol.toPrimitive]方法时首先调用valueOf方法,当返回值不是原始类型时再调用toString方法。
- 两种方式最终返回结果若不是原始类型则会抛错
let a = {
[Symbol.toPrimitive]() {
return 2
},
valueOf() {
return 0
},
toString() {
return '1'
}
}
1 + a // => 3