为了账号安全,请及时绑定邮箱和手机立即绑定

js惰性求值中 true&&字符串&&true 为什么会输出true?

js惰性求值中 true&&字符串&&true 为什么会输出true?

慕标5832272 2018-09-13 05:35:14
在书上看到js惰性求值的一段介绍:如果javascript引擎在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值就会成为该表达式所返回的结果。列如:true || "something";输出 truetrue && "something";输出 "something"true&&"something"&&true;输出true对于第三个输出true不理解,按照书上的介绍不是应该输出"something"吗?还有我自己测试中将true && "something" 的顺序颠倒变成"something"&&true; 输出"true",这又是为什么呢?
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

其实 高程三 里都有

先看第一句 true || "something" , || 或字符,遇到 true ,条件成立,返回true

第二句,&& 且字符,碰到 true ,但条件不一定成立,需要判断后面的, 那么就返回后面的值 也就是 something

第三句,同理,判断了 第一个 true ,第二个 something,仍然不能确定整体是否为 true ,需要判断第三个条件,自然返回 true

那么再看两个例子吧

true && 'something' || true , 返回什么? 当然是 something, 因为判断到 something 的时候,整个语句就已经有答案了 ,因此返回 'something'

false || 'something' 返回 ‘something’ ,因为判断了 ’something‘是才能有答案

false && 'something' 返回 false ,一样的, 判断到 false 就已经有答案了

希望我讲明白了。


查看完整回答
反对 回复 2018-10-19
  • 1 回答
  • 0 关注
  • 487 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信