1.在基本数据类型做弱比较( == )时,都会转换成number类型来比较:
比如处理true == 1 和 false == 0 的判断流程是这样的:
- 如果比较的两者中有boolean,会把 boolean 先转换为对应的 number,即 0 和 1(false是0,1 是true)
- 如果比较的双方中有一方为number一方为string,会把string转换为数字
- 把string直接转换为boolean的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true
如果是在做if判断则是会转换为布尔类型:
2.在复杂数据类型(object)和基本数据类型做弱比较时,会进行隐式转换。
转换时函数调用顺序如下:
[Symbol.toPrimitive]转换成功则结束,否则执行
valueOf 转换成功则结束,否则执行
to string 转换成功则结束,否则抛出异常;
注意:数组在进行隐式转换调用toString时,toString方法会调用join方法;
例如: