js入门-if(xx)和 x==y的判断
2018-11-02 本文已影响17人
YYPL
if(xx) 的判断判断
xx
的类型不外乎Undefined
Null
Boolean
Number
String
Object
,ES6 又新增了第七种 Symbol 类型的值
括号里的表达式,强制转换为布尔类型
- if(
undefined
)
if(undefined){
console.log('true');
}
// false
if(undefined)的布尔值为false
- if(null)
if(null){
console.log('null')
}
//false
if(''):null的布尔值为flase
- if(
Boolean
)
if(true){
console.log('true');
}
//true
if(false){
console.log('true');
}
//false
if(null):布尔值直接判断
- if(
Number
)
if(+0){
console.log('true');
}
//false
if(-0){
console.log('true');
}
//false
if(NaN){
console.log('true');
}
//false
if(Number
):+0 -0 NaN为false,其他为true
- if(
String
)
if(null){
console.log('true');
}
//false
if(''){
console.log('true');
}
//false
if(' '){
console.log('true');
}
//true
if(null): 空字符串为 false,其他都为 true
- if(
Object
)
if ([0]) {
console.log('array')
}
//true
if([1,3,4]){
console.log('true')
}
// true
if(object): object的布尔值为真
x==y的判断
- undefined == null
undefined == null
// true
undefined
转为为number为NaN(not a number)
null
转为为number为0
这个比较特殊,记住就行
- string == number
把string转为为number,当不能转化为number时为false
'12345' == 12345
// true
'abcde' == '12345'
//false
'' == 0
//true
' ' == 1
//true
- boolean == (any)
boolean转化为数字1(true)或者0(false),右边的值转为为数字再进行比较
true == 1 //true
false == 0 //true
true == null //false 一个对象都不会等于 undefined 或 null。
false == null //flase 一个对象都不会等于 undefined 或 null。
true == undefined //false undefined转为为number为NaN
false == undefined //false undefined转为为number为NaN
true == '' //false
false == '' //true 转为化number为 0
true == [] //false 空数组[]调用 tostring ,结果既不是1也不是0
false == f [] //false 空数组[]调用 tostring ,结果既不是1也不是0
true == {} //false {}不能转化为数字,是一个字符串
false == {} //false {}不能转化为数字,是一个字符串
- (string or Number )== Object
[] == true // false
[] == fslae // false
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果
总结
if(xx),强制转为为布尔类型再判断
undefined == null //true (特殊)
true == {} //false {}不能转化为数字,是一个字符串
x == y 的结果判断,先把 x y 往数字转,然后再判断
一个对象都不会等于 undefined 或 null,undefined == null // true
NaN === NaN //false
undefined转为为number为NaN
参考
JavaScript 中的相等性判断-MDN
Truth, Equality and JavaScript
JavaScript-Equality-Table