美文网首页饥人谷技术博客
关于 if(xx)与 a == b 的判断

关于 if(xx)与 a == b 的判断

作者: SaSa_Wang | 来源:发表于2018-02-11 13:02 被阅读4次

if(xx)的判断

1.if(number)

当 if(number),0、NaN为false,其他值为true

var a = 5
if(a){
    console.log('true')
} // true
a = 1
if(a){
    console.log('true')
} // true
a = 0
if(a){
    console.log('true')
} // false
a = -1
if(a){
    console.log('true')
} //false
a = NaN
if(a){
    console.log('true')
} //false

2.if(string)

当 if(string),空字符串为false,其他为true

if('hello'){
    console.log('true')
} // true
if('   '){
    console.log('true')
} // true
if(''){
    console.log('true')
} // false
if('0.00'){
    console.log('true')
}

3.if(boolean)

当 if(boolean),直接判断

if(true){
    console.log('true')
} // true
if(false){
    console.log('true')
} // false

4.if(object)

当 if(object),为true

if([1,3,4]){
    console.log('true')
} // true
function f(){
   var b = 1 + 2;
   return b; 
}
if(f()){
    console.log('true')
} //true

5.if(undefined)

当 if(undefined),为false

if(undefined){
    console.log('true')
} //false

6.if(null)

当 if(null),为false

if(null){
    console.log('true')
} //false

a == b 的判断

对于相同类型的a、b,相等的判断较简单。以下主要讨论不同数据类型的a、b之间进行相等运算时的判断。

1. string == number

结果为 toNumber(a) == b ,当a无法转换为number时判断相等为false

 "" == 0           //true
 "  " == 0         //true
 "hello" == 0      //false
 "hello" == 1      //false
 "2" == 2          //true

2. boolean == (any)

Boolean在相等运算时会转换为数值,true为1,false为0。

 "" == true           //false
 "" == false          //true
 " " == true          //false
 "hello" == true      //false
 1 == true            //true
 0 == false           //true
 undefined == false   //false
 undefined == true    //false
 null == false        //false
 null == true         //false

3. object == number/string

object会试图使用valueOf和toString转换后比较

var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == 1   //true
[] == 0    //true
[2] == 2   //true

4. null == undefined //true


toNumber

undefined --> NaN
null --> 0
boolean --> true:1, false:0
string --> "abc":NaN,"123":123


总结:

做相等运算时,一般倾向于将不同的数据类型都转化为数值,或是转化为相同的数据类型.

  • 如果两个值类型相同,则执行严格相等的运算
  • 如果两个值的类型不同
    1. 如果一个是null,一个是undefined,那么相等
    2. 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    3. 如果一个值是true/false则将其转为1/0比较
    4. 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    5. 其它就不相等了了

相关文章

  • 关于if(xx)与a==b的判断

    关于if(xx)与a==b的判断 简单介绍下if(xx)和a==b的相关判断 if(xx)的判断 1.if(num...

  • 2019-04-07

    JS中关于if(xx)与a==b的判断 if(xx)的判断 1.if(number) 当if中是number为+0...

  • 关于 if(xx)与 a == b 的判断

    if(xx)对于if(xx),是把xx转换成boolean在进行判断如果括号内是boolean,直接判断。否则括号...

  • 关于 if(xx)与 a == b 的判断

    1. if(xx)的判断 括号里的表达式,会被强制转换为布尔类型,原理如下表: 转换结果示例:Undefined ...

  • 关于if(xx)与a = = b的判断

    if(xx) 判断原理: 对于if()里括号的表达式(如以下),会被强制转换为布尔类型 if条件句中有几种转化类型...

  • 关于 if(xx)与 a == b 的判断

    if(xx)的判断 1.if(number) 当 if(number),0、NaN为false,其他值为true ...

  • 2019-05-17

    关于if(xx)和 a==b的判断 if(xx)的判断 括号中的xx会被强制转换为布尔类型,true 或者 fal...

  • 关于if(xx)和 a==b的判断

    if(xx) if后的括号里的表达式会被强制转换为布尔类型 number a = 1if(a){console.l...

  • 关于if(xx)和 a==b的判断

    if的判断 1.if(number)if后的括号里的表达式会被强制转换为布尔类型 例:当 if(number),0...

  • 关于if(xx)和 a==b的判断

    if的判断 原理 解密 对于括号里的表达式,会被强制转换为布尔类型 做几道测试题看一看 == 的判断 对于==的判...

网友评论

    本文标题:关于 if(xx)与 a == b 的判断

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