javascript - js的逻辑运算问题
黄舟
黄舟 2017-04-10 16:50:01
[JavaScript讨论组]

今天学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
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
伊谢尔伦

这个很简单,,你不需要理解,,记住就好了。

true||* == true,第一个为true就不在看第二个了,值为true。
fasle || true == true 第一个为false继续看第二个,第二个为true就为true
false || false == false 第一个为false继续看第二个,第二个为false就为false

false &&* == false ,第一个为false就不在看第二个了,值为false。
true && false == false 第一个为true 继续看第二个,第二个为false 就为false
true && true == true 第一个为true 继续看第二个,第二个为true 就为true

当进行逻辑运算的不是布尔值,而是数字的时候,就等于相应的数字,当然先进性布尔判断,字符串也一样。

(1&&2&&5) || 3的值就为5,因为1为true继续判断第二个2也为true继续判断第三个5也为true,则前面为true不用判断3了,所以值为5

1&&2||3&&4|| 3这个就为2

0||''||'a'这个就为'a'因为前两个的布尔值都为false所以继续判断第三个。就为'a'。

你的题目在下面

false||6||true首先false继续判断第二个,则(false||6)这个的值为6.为真则不判断最后一个值了,就为6

false&&6
因为第一个已经false就不会看第二个6了,就为false

黄舟

我们知道(真||任意)都是真
那么在(表达式1 || 表达式2)这整个表达式中, 如果表达式1是真, 此时已经"可以判断整个表达式的结果", 这个结果就是表达式1. 此过程中表达式2根本不会被计算 (注意: 表达式2不一定是一个变量, 可以是个很长的式子, 可以是个函数call)

高洛峰

Phpq中也一样,短路现象

怪我咯

楼上回答已经非常好啦,其实&&运算返回真的条件是所有为真,所以有一个为假啦,就直接返回假啦。而‖运算,返回为真的条件是有一个为真,所以会从头开始往后执行,如果遇到一个真就停止往后执行啦,直接返回真,而如果到最后还是假,那就是假。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号