文章目录

在各种框架中经常看到一些简便的或且表达式取值,比如:

1
2
var a = xx && obj.xx && win.xxx;
var b = xx || obj.xx || win.xxx;

这是什么意思呢,用过的人都知道,对于javascript而言,不一定是boolean才可以判断的,所有对象都可以判断,包括undefined,null等

以下是对JS6种类型的判

类型 条件判断为
Function True
Undefined False
String 空字符串为false,否则为true
number 0为false,其它为true
boolean true/false
object null为flase,不为空为true

这样就可以看到这个意思了

比如:

1
2
var a = true && false && true;  //即 a = false;
var b = true || false ||false; 即 b = true;

这个运算都知道 && 从左到又遇到 false 就返回 ,||是从左到右遇到 true 就返回,
所以 1里面的第三个true,和b里面的第二三个false是没有计算的,直接返回了最后判断的表达式。

好吧,再验证一下

1
2
3
4
5
6
7
8
false || 0 || ( 3 + 11 ) || ( 5 + 3 )
//-》14 算到第三个 ( true ) 就直接返回
false || 0 || undefined || null
//-》null返回算到的最后一项
4 && 6 && ( 5 - 5 ) && new Date()
//-》0 算到第三个(false)就直接返回
4 && 6 && 8 && new Date() && 50
//-》50 返回算到的最后一项

OK,说到这里

文章目录