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

2016-10-16 08:30发布

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

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

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

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

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

10条回答

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

一周热门 更多>