var x = 3 || null || undefined; alert(x) // 3 var y = 3&&NaN&&5; alert(y); //NaN
以上 x,y并没有像我们想象中返回的是进行布尔运算,返回的是我们认为的true,false.
布尔假值:(0
, null
, ""
, undefined
, NaN
)
其实这种特性叫短路求值,&&
会返回第一个假值(0
, null
, ""
, undefined
, NaN
),而 ||
则会返回第一个真值。
所以 &&
有时候会用来代替 if (expression) doSomething()
,转成 &&
方式就是 expression && doSomething()
。
而 ||
比较用来在函数中设置默认值,比如