-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
#+ 类似下面的布尔类型隐式转换:
if (xxx){
xxx
}
记住两句话:
“” ->只有空字符串为false,其它字符串一律为true;
obj(obj,arr,funciton) -> 都为true
==进行比较时的类型隐式转换:
记住下面的话:
浏览器尽量把所有的数据类型转换为number类型(toNumber( ))
obj -> ①valueOf ②toString
- 如果比较的两者中有布尔值
Boolean,会把Boolean先转换为对应的Number,即 0 和 1,然后进行比较。 - 如果比较的双方中有一方为
Number,一方为String时,会把 String 通过 Number() 方法转换为数字,然后进行比较。 - 如果比较的双方中有一方为
Boolean,一方为String时,则会先将双方转换为数字,然后进行比较。 - 如果比较的双方中有一方为 Number,一方为
Object时,则会调用valueOf方法将Object转换为数字,然后进行比较。 - 当一个对象同时包含 toString() 和 valueOf() 方法的时候,Javascript 会盲目的选择
valueOf()方法而不是 toString() 来解决这个问题
"1" + { toString: function() {return 1;} } // "11"
1 == { valueOf: function() {return 1;} } // true
1 + { valueOf: function() {return 1;} } // 2
参考