今天学ps看到一句话:js中,逻辑运算返回的是最早能判断表达式结果的那个值。想了半天,脑子没转过来,求教。
例子:
var a=false;
var b=6;
var c=true;
console.log(a‖b‖c);//6
var d=false;
var e=6;
console.log(d && e);//false
今天学ps看到一句话:js中,逻辑运算返回的是最早能判断表达式结果的那个值。想了半天,脑子没转过来,求教。
例子:
var a=false;
var b=6;
var c=true;
console.log(a‖b‖c);//6
var d=false;
var e=6;
console.log(d && e);//false
我们知道(真||任意)
都是真
那么在(表达式1 || 表达式2)
这整个表达式中, 如果表达式1
是真, 此时已经"可以判断整个表达式的结果", 这个结果就是表达式1. 此过程中表达式2根本不会被计算 (注意: 表达式2不一定是一个变量, 可以是个很长的式子, 可以是个函数call)
其实嘛,这个东西是从 shell 语言过来的,但是这种代码写出来不直观,也不好读。可以看看这篇文章有介绍。
http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy/
楼上回答已经非常好啦,其实&&运算返回真的条件是所有为真,所以有一个为假啦,就直接返回假啦。而‖运算,返回为真的条件是有一个为真,所以会从头开始往后执行,如果遇到一个真就停止往后执行啦,直接返回真,而如果到最后还是假,那就是假。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
题主,我给你讲两个故事:
正如这个故事讲的:计算一个复杂表达式的时候,如果在计算到某个步骤时就可以确定最终值,那么就没有必要再往下计算了。据我所知,很多语言在计算逻辑表达式的时候都是这么做的。毕竟逻辑表达式只有两种结果:true和false,所以结果很容易提前预知。
只不过JavaScript比较特殊,:逻辑表达式最终的结果不一定是true或false,而是停止计算前最后一个操作数的值。
提示你一点:并不存在多个操作数的逻辑运算,只存在两个数的逻辑运算。
例如:
a && b && c
只不过等价于(a && b) && c
。具体规则,见:http://es5.github.io/#x11.11