2016年3月31日 星期四

[JS] 邏輯運算元(短路與非短路)

二元邏輯運算子(binary logical operators)是會短路的(short circuiting)
代表第一個運算元(operand)就能判斷結果,則第二個運算就不會被估算(evaluate)


//Logical AND(&&):返回 false 一方的值
//Logical AND(&&):全部皆 true 才是 true,所以會找出不是 true 的值回傳
var a1 = 1;
var b1;
var c1 = (a1 && (b1 = a1 + 1));
console.log(c1);
//c = 2

//Logical OR(||):返回 true 一方的值
//Logical OR(||):一個 true 就是 true,所以碰到 true 的值就直接回傳
var a2 = 'something';
var b2;
var c2 = a2 || b2;
console.log(c2);
//c = something

可運用 Logical OR 特性指定預設值:
function pair(x, y) {
     x = x || 0;
     y = y || 0;
     return [x, y];
}
pair();     //[0, 0]
//x 或 y 在沒有傳入的情況下會是 undefined,但是藉由 Logical OR 可指定成 0

//注意:由左至右運算
console.log(0 && undefined && null);
//返回 0
console.log(0 || undefined || null);
//返回 null
console.log(1 && 2 && 3);
//返回 3
console.log(1 || 2 || 3);
//返回 1

沒有留言:

張貼留言