美文网首页饥人谷技术博客前端学习
js入门-if(xx)和 x==y的判断

js入门-if(xx)和 x==y的判断

作者: YYPL | 来源:发表于2018-11-02 19:14 被阅读17次

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

相关文章

网友评论

    本文标题:js入门-if(xx)和 x==y的判断

    本文链接:https://www.haomeiwen.com/subject/zhjcxqtx.html