最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

javascript逻辑运算符

来源:动视网 责编:小OO 时间:2025-09-30 17:18:02
文档

javascript逻辑运算符

javascript逻辑运算符“||”和“&&”一、先来说说||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。alert(true||false);//truealert(false||true);//truealert(true||true);//truealert(false||false);//false复制代码但是,从深层意义上来说的话,却有另一番天地,试下面代码alert(0||1);显然,我们知道,前面0意味着false,而后面1意味着t
推荐度:
导读javascript逻辑运算符“||”和“&&”一、先来说说||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。alert(true||false);//truealert(false||true);//truealert(true||true);//truealert(false||false);//false复制代码但是,从深层意义上来说的话,却有另一番天地,试下面代码alert(0||1);显然,我们知道,前面0意味着false,而后面1意味着t
javascript逻辑运算符“||”和“&&”

一、先来说说||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。

alert(true||false);    // true

alert(false||true);    // true

alert(true||true);        // true

alert(false||false);    // false

复制代码

但是,从深层意义上来说的话,却有另一番天地,试下面代码

alert(0||1);

显然,我们知道,前面0意味着false,而后面1意味着true,那么上面的结果应该是true,而事实返回的结果是1。再看下面代码:

alert(2||1);

我们知道,前面2是true,后面1也是true,那返回结果又是什么呢?测试结果是2,继续看:

alert('a'||1);

同样,前面'a'是true,后面1也是true;测试结果是'a',下面

alert(''||1);

由上,我们知道前面''是false,后面1是true,而返回结果是1。再看下面

alert('a'||0);

 前面'a'是true,而后面0是false,返回结果是'a',继续下面

alert('a'||'b');

 前面'a'是true,后面'b'是false,返回结果是'a',我们继续下面

alert(''||0);

 前面''是false,后面0同样是false,返回结果是0

alert(0||'');

前面0是false,后面''是false,返回结果是''

 

这就意味

1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。

2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

 

----------------------------------------------------------------------------------------------------------

二、下面说说&&(逻辑与),从字面上来说,只有前后都是true的时候才返回true,否则返回false。

alert(true&&false);    // false

alert(true&&true);    // true

alert(false&&false);    // false

alert(false&&true);    // false

复制代码

然后,根据上面经验,我们看看“&&”号前后,不单单是布尔类型的情况。

alert(''&&1);

结是返回'',“&&”前面''是false,后面是1是true。

alert(''&&0);

结是返回'',“&&”前面''是false,后面是0也是false。

alert('a'&&1);

结是返回1,“&&”前面''a是true,后面是1也是true。

alert('a'&&0);

结是返回0,“&&”前面''a是true,后面是0是false。

alert('a'&&'');

结是返回'',“&&”前面''a是true,后面是''是false。

alert(0&&'a');

结是返回0,“&&”前面''0是false,后面是'a'是true。

alert(0&&'');

结是返回0,“&&”前面''0是false,后面是''也是false。

 

这意味着

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

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

 

 

让我们总结一下:

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

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

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

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

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

需要说明的是“&&”的优先级是高于“||”的,下面测试:

alert(1||'a'&&2);

返回结果是1。

根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。

根据上面我们得出的结论(1),(1||'a')将返回前面的值1,(1&&2)根据结论(4)应该返回后面的值2。这显然不对,由此可知“&&”的优先级是高于“||”的。

JavaScript逻辑运算符及优先级

时间:2011年07月06日作者:愚人码头查看次数:3,130 views评论次数:12

今天看了一段YUI compressor压缩的js代码:

view source 

print?

1userNum && (ind += index,ind >= userNum && (ind -= userNum),ind < 0 && (ind === -2 && (ind = -1),ind += userNum),selLi.removeClass("on"),$(selLi[ind]).addClass("on"));
直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。

&& (逻辑与)

 

这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子:

view source 

print?

1var a = 1 && 2 && 3;//3 

2var b = 0 && 1 && 2;//0 

3var c = 1 && 0  && 2;//0 

4alert(a),alert(b),alert(c);
嘿嘿,写法很奇怪,运行的结果是3,0,0。一般我们在if语句中经常用到。“&&” (逻辑与) 运算和“||”运算真好相反,“&&” 运算遇到false就返回。

例如: a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a,上面例子中第一个var a = 1 && 2 && 3;因为1 && 2,1为真,返回2;2&&3, 2为真,返回3 。

搞懂了“&&” 运算,再来看最上的面的YUI compressor压缩的js代码,翻译一下:

view source 

print?

01if(userNum){ 
02ind += index; 
03if (ind >= userNum) { 

04ind -= userNum 
05
06if(ind < 0){
07if(ind === -2){ 
08ind = -1; 
09
10ind += userNum; 
11
12selLi.removeClass("on"); 
13$(selLi[ind]).addClass("on"); 
14}
 

说来惭愧,年纪大了,足足“翻译”了半个小时,还是在同事的帮助下才“翻译”正确。

||(逻辑或)

再来看看“||”(逻辑或)运算,看例子:

view source 

print?

1var a = 0 || 1 || 2;//1 

2var b = 1 || 0 || 3;//1 

3alert(a),alert(b);
“||”运算遇到true就返回。例如:a || b ,如果 a 为false,直接返回b,而不管b为true或者false 。如果 a 为true,直接返回a,而不会继续往下执行。

&& (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级:

&& (逻辑与) 优先级高于||(逻辑或)

return a && b || c ,

根据a来判断返回值,a 是 false 则肯定返回 c;如果 b , c 都是 true ,那么我们就可以根据 a 来决定b 还是 c ,如果 a 是 false 则返回 c,如果a是true 则返回 b。

return a || b && c

根据优先级相当于先算 b && c ,然后和a 相 或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c;

view source 

print?

1var a = 3  &&  0 || 2;  //2 

2  

3var b = 3 || 0  &&  2; // 3 

4  

5var c= 0 || 2 && 3; // 3 

6alert(a),alert(b),alert(c);
 

文档

javascript逻辑运算符

javascript逻辑运算符“||”和“&&”一、先来说说||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。alert(true||false);//truealert(false||true);//truealert(true||true);//truealert(false||false);//false复制代码但是,从深层意义上来说的话,却有另一番天地,试下面代码alert(0||1);显然,我们知道,前面0意味着false,而后面1意味着t
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top