&&和||返回值问题
首先要知道&&和||是什么。&&是并运算符,一般用于判断语句如:
- if (a && b){
- //当a和b为真时执行
- }
也许有人会说那 a && b 这个东西返回了true ! 那么这对么?显示是错误的,我们运行以下代码:
- alert( 'a' && 'b' ) //弹出 b
看,弹出了 b 。因此我们可以知道 'a' && 'b' 这个运算的结果就是 'b' 。那有人要问那怎么解释第一个if 语句呢。我们先不关心这个问题,继续看||运算符。
- alert( 'a' || undefined ) //弹出 'a'
- alert( undefined || 'b' ) //弹出'b'
- alert( 'a' || 'b' ) //弹出 'a'
总结第三个代码 我们发现,|| 返回了一个可以转为true的值。就是这里了。
&& 是并运算符,首先检查 左边,如果左边的值转成布尔类型后为假那就返回左值,如果左边值转成布尔类型后为真那继续较验右边值,如果右边值转成布尔类型后为假则返回右边值。如果如右边值为真是也返回右边值。
|| 是或运算符,如果左边为真是直接返回左边值,如果左边转成布尔类型后为假时返回右边值。
所以 && 和 || 返回的值不是true也不是false。而是将参加运算县且符合运算逻辑的值返回。
所以有这样的赋值语句:
- a = a || {}
当 a 未定义或定义未赋值或赋值转为布尔类型为假时给a赋值空对象。