「前端基础」js惰性求值中 true&&字符串 true和字符串位置不同为什么输出的结果不同?

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

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

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

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

3个月前
回答

我是这样理解的,|| 或的意思,只要第一个值为真,后面的值自然就不用管, 结果就是第一个值; &&与,不仅要看第一个值,而是要一直看到最后一个值是否也为真,true&&"something 表达式结果为something,"something"&&true的话表达式就是true 。其实就是|| 和&& 特性不一样,前者有一个为真就,后面的就不用看了,&&必须一直看到最后一个值是否为真

3个月前评论 0分享

A || B: 有一个为真就真,所以A为真时,不会判断B值,直接输出A;A为假判断B,输出B A && B: 同时为真即真,所以A值为假,不判断B,输出假;A值为真再判断B,此时输出B(B为真即真,为假即假)

3个月前评论 0分享
一个一个的天涯 ,寻找自己中

null '' undefined NaN false 0 这些都为假 &&是AND运算 遇到假则返回假,否则就返回最后那个值. 例:"1"&&3 返回3;"1"&&0返回0;0&&1返回0 “something”&&true; 输出”true”,这又是为什么呢? 因为"something"为真,则返回最后那个值,就是true. true&&"something"&&true; 因第一个true为真,判断下一个;"something"为真;返回最后一个.所以结果是true true&&""&&true; 因第一个是true,判断下一个;""是假,遇假则返回假,结果就返回"". || 和&&是一样的道理 比如以下语句 可以用if else 翻译出来 typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this;

3个月前评论 0分享
我来回答
无用回答
问题标签
问题修改记录
暂无修改记录
广告位 点击查看投放指南

我的收藏