欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 短路求值

鄭雨菲1年前6瀏覽0評論

Javascript 中的短路求值是指在邏輯運算中,如果第一個操作數已經能夠確定結果,則不會計算第二個操作數,而直接返回第一個操作數的值。這種求值方式雖然可以提高程序的運行效率,但也會導致一些預期外的結果。下面我們來看幾個實例:

1. 利用短路求值來實現默認參數

function test(a, b) {
b = b || 0;
console.log(a + b);
}
test(1, 2);  //輸出3
test(1);     //輸出1,因為b的值為0

2. 利用短路求值來判斷對象屬性是否存在

var obj = {
a: 1,
b: null
};
console.log(obj.a && obj.a.foo);      //輸出undefined
console.log(obj.b && obj.b.foo);      //輸出null

3. 利用短路求值來避免空指針異常

var obj = {
a: {
b: {
c: 1
}
}
};
console.log(obj && obj.a && obj.a.b && obj.a.b.c);     //輸出1
console.log(obj && obj.a && obj.a.b && obj.a.b.d);     //輸出undefined

需要注意的是,短路求值只適用于布爾運算符(&& 和 ||),不適用于位運算符(&、|、^、~等)。

另外,短路求值在一些場景下會出現一些問題。如下面的代碼:

var x = 1;
var y = 2;
x >0 && (y = y + 1);
console.log(y);   //輸出2

這時候我們可能預期的結果是 y 的值為3,但實際上,因為 x 的值為1,所以第一個操作數為真,第二個操作數并沒有執行,導致 y 的值沒有被修改。

綜上所述,短路求值雖然可以提高程序的效率,但需要注意一些細節上的問題,慎重使用。