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

一. 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
}
  1. 当if括号里面的表达式为String时,空字符串为false,其他为true;
if(""){
  console.log("true"); //false
}
if("abc"){
  console.log("true"); //true
}
  1. 当if括号里面的表达式为Undefined时,为false;
if(Undefined){
  console.log("true"); //false
}
  1. 当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
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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一次见赵陆阳大概五岁,刚刚随爸爸妈妈搬到新家,陆阳住我家对门,比我大两岁。那天晚上陆阳的妈妈带着他来串门,阿姨很...
    Serenity沉水阅读 3,630评论 10 10
  • 笔者:陈夏 你是否也这样:每过一段时间,习惯性的奔溃,又习惯性的自愈了。好像在给生活一点惊喜又制造了一点小波澜。 ...
    kairuian阅读 3,541评论 0 2
  • 周一,又是繁忙的一天,共有五节课,穿缩于1,2,3班,也是没谁了。如今在一班上课真的是吵到让人发疯,是属于坚持不到...
    大龄的小姐姐阅读 1,090评论 0 0
  • 2018年4月7号晴 今天我带着孙子去了,桑园看玉兰花,一路上山清水秀,阳光明媚,...
    钟京芬阅读 1,234评论 0 0

友情链接更多精彩内容