码迷,mamicode.com
首页 > 其他好文 > 详细

你了解if语句吗?

时间:2017-09-10 11:11:22      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:div   bsp   def   blog   运算   方式   undefined   []   color   

一、if(a)语句中的a是真是假

var bool = new Boolean(false);
if (bool) {
  console.log(‘true‘);
} else {
  console.log(‘false‘);
}

运行结果为true,因为bool是一个对象,空对象。

var a = [0];
if ([0]) {
  console.log(a == true);
} else {
  console.log("camille");
}

运行结果为false,因为[0]是一个引用类型,不是假值,于是进入if语句;又因为比较[0]和true前,会做隐式转换,[0]转换为数字是0,true转换为数字是1,那么0==1,结果为false是情理之中的事。

//综上
假值:0,+0,-0,NaN,"",false,undefined,null
非假值:Infinity,‘0‘,‘false‘," ",[],{},function(){}

 二、if (a && b)的含义

&&是种短路语法,求值后不一定是个Boolean类型,更不是两边转化布尔值再运算,而是a && b进行表达式求值后,然后再转换为Boolean类型。

比如 2&&3 的结果是3,不是true。

所以if(a && b),我们平常理解的那种,"如果a和b同时为真,就如何如何",是一种错误的描述方式。逻辑或 || 也是如此,先进行表达式求值,再转换为Boolean类型。

你了解if语句吗?

标签:div   bsp   def   blog   运算   方式   undefined   []   color   

原文地址:http://www.cnblogs.com/camille666/p/js_if.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!