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

发布于 2022-09-04 00:38:12 字数 466 浏览 19 评论 0

在书上看到js惰性求值的一段介绍:如果javascript引擎在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值就会成为该表达式所返回的结果。列如:

true || "something";输出 true
true && "something";输出 "something"
true&&"something"&&true;输出true

对于第三个输出true不理解,按照书上的介绍不是应该输出"something"吗?

还有我自己测试中将true && "something" 的顺序颠倒变成

"something"&&true; 输出"true",这又是为什么呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

堇年纸鸢 2022-09-11 00:38:13

其实 高程三 里都有

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

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

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

那么再看两个例子吧

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

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

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

希望我讲明白了。

灯角 2022-09-11 00:38:13

首先要明白 ‘||’ 与 ‘&&’的区别:
1.‘||’是只要‘||’之前有结果是为true的时候,‘||’后面的表达式都不会继续执行了,直接返回‘||’之前的结果;如果执行到最后一个表达式,那么直接返回最后一个表达式的值
2.‘&&’这个是只要结果是为false的时候,直接返回false,如果前面的表达式执行结果一直是true的话,然后会执行到最后一个表达式,如果最后一个表达式为非false,那么直接返回这个表达式的结果,反之直接是false

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文