Open Twlig opened 2 years ago
注意:
[],{}转换为Boolean也是true
Boolean(new Boolean(false))也是true
转换后是false的:
undefined
null
-0
+0
NaN
‘’(空字符串)
== 如果不相等会进行隐式类型转换,会去调用变量的valueOf、toStirng方法。
=== 则不会进行隐式类型转换
在转换操作数的类型时,相等和不相等操作符遵循如下规则。
如果任一操作数是布尔值,则将其转换为数值再比较是否相等。false 转换为 0,true 转换为 1。
2 == true //false2 == false //false
如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,再比较是否相等。
如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法取得其原始值,再根据前面的规则进行比较。
在进行比较时,这两个操作符会遵循如下规则。
null 和 undefined 相等。
null 和 undefined 不能转换为其他类型的值再进行比较。
如果有任一操作数是 NaN,则相等操作符返回 false,不相等操作符返回 true。
即使两个操作数都是 NaN,相等操作符也返回 false,因为按照规则,NaN 不等于 NaN。
如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true。否则,两者不相等。
js中各种类型转换为Boolean类型
注意:
[],{}转换为Boolean也是true
Boolean(new Boolean(false))也是true
转换后是false的:
undefined
null
-0
+0
NaN
‘’(空字符串)
使用 == 和 ===区别
== 如果不相等会进行隐式类型转换,会去调用变量的valueOf、toStirng方法。
=== 则不会进行隐式类型转换
在转换操作数的类型时,相等和不相等操作符遵循如下规则。
如果任一操作数是布尔值,则将其转换为数值再比较是否相等。false 转换为 0,true 转换为 1。
如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,再比较是否相等。
如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法取得其原始值,再根据前面的规则进行比较。
在进行比较时,这两个操作符会遵循如下规则。
null 和 undefined 相等。
null 和 undefined 不能转换为其他类型的值再进行比较。
如果有任一操作数是 NaN,则相等操作符返回 false,不相等操作符返回 true。
即使两个操作数都是 NaN,相等操作符也返回 false,因为按照规则,NaN 不等于 NaN。
如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true。否则,两者不相等。