美文网首页
关于if(xx)和 a==b的判断

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

作者: usopp酱 | 来源:发表于2018-04-07 11:08 被阅读0次

一. if(xx)的判断

JavaScript 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。

  1. 当if括号里面的表达式为Boolean时,直接判断
if (true){
   console.log("true"); //true
}
if (false){
   console.log("true"); //false
}
  1. 当if括号里面的表达式为Number时,分两种情况,当number为+0,-0,NaN的时候,为false;其他为true。
if(0){
  console.log("true"); //false
}
if(NaN){
  console.log("true"); //false
}
if(1){
  console.log("true"); //true
}

3.当if括号里面的表达式为String时,空字符串为false,其他为true;

if(""){
  console.log("true"); //false
}
if("abc"){
  console.log("true"); //true
}

4.当if括号里面的表达式为Undefined时,为false;

if(Undefined){
  console.log("true"); //false
}

5.当if括号里面的表达式为null时,为false;

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

toBoolean

类型 结果
undefined false
null false
Boolean 直接判断
string ""(空字符串)为false,其他为true
Object true
Number +0,-0,Nan为false,其他为true

二. a==b的判断

==是比较两个值是否相等,相同类型直接比较,不同类型的话,看情况转换。

  1. String==Number --->toNumber(String)==Number
"" = 0 ; //true,因为“”转换为0
"  " = 0 ; //true
"hello" == 1  //false  ,因为"hello"转换为NaN
"hello" == 0 //false,同理
  1. Boolean==(any) --->toNumber(Boolean)==(any)
1==true; //true,因为true转换为1
0==false;//true ,因为false转换为0
"0" == true  //false
"0" == false  //true
"00" == false  //true
"0.00" == false  //true
  1. Object==String/Number---->toPrimitive(Object)
    对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结
{} == true  // false
[] == true  //false
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //false
obj == 1  //true
obj == true  //true
  1. null==undefined,//true
  • ==知识点
    如果两个值类型相同,则执行严格相等的运算
    如果两个值的类型不同
    如果一个是null,一个是undefined,那么相等
    如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    如果一个值是true/false则将其转为1/0比较
    如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    其它就不相等了

toNumber

类型 结果
Undefined NaN
Null 0
Boolean ture->1,false->0
String (""-->0, " "-->0 )空字符串与空白字符串转换数值0,abc"->NaN,"123"->123

相关文章

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

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

  • 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的判断

    if条件判断 if...else 条件判断的语法如下: if (条件){当条件为 true 时执行的代码}else...

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

    if(xx)的判断 对于括号里的表达式,会被强制转换为布尔类型 转换规则是除了下面六个值被转为false,其他值都...

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

    一. if(xx)的判断JavaScript 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参...

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

    if(xx)的判断 对于括号里的表达式,会被强制转换为布尔类型 类型 结果 Undefined ...

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

    一、if(xx)的判断 对于if括号里的表达式,会被强制转换为布尔类型 当if括号里面的表达式为Boolean时,...

网友评论

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

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