码迷,mamicode.com
首页 > Web开发 > 详细

js中关于|| 和&& 以及!的理解

时间:2016-05-15 14:01:58      阅读:453      评论:0      收藏:0      [点我收藏+]

标签:

在JavaScript逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true;

在JavaScript运算过程中,首先js 会将 && 和||  两边的值转成Boolean 类型,然后再算值 ,&&运算如果返回true,则取后面的值,如果|| 返回true,则取前面的值,

转换规则:

对象为true;

非零数字为true;

非空字符串为true;

其他为false;

 

 

1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。

 

2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。

 

3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

 

4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

逻辑运算符,“||”和“&&”都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。

 

需要说明的是“&&”的优先级是高于“||”的;

 

odi = odi|| attr; //如果foo存在,值不变,否则把bar的值赋给foo

等于

if(!odi){
    odi= attr;
}

为什么if(!odi),为什么不直接写if(odi)?
其实这是一种更严谨的写法:!的作用是把一个其他类型的变量转成的bool类型。
可以测试选 typeof 5和typeof !5的区别,返回的分别是number和boolean;

js中关于|| 和&& 以及!的理解

标签:

原文地址:http://www.cnblogs.com/wjx91/p/5495011.html

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