1. 程式人生 > >賦值語句中||與&&的理解與妙用

賦值語句中||與&&的理解與妙用

一、
宣告變數a
a = 1 || 100;
a = 0 || 100;

1、上述程式碼在JavaScript(弱型別的解釋型語言)中,結果如下:
a = 1 || 100;  //1
a = 0 || 100;  //100

2、上述程式碼在C、Java等(強型別編譯型語言)中,結果如下:
a = 1 || 100;  //1
a = 0 || 100;  //0

以 a = b || c為例:
在JavaScript中,如果b不為0、undefined、null、false,則a = b,“||”後面的不執行
如果b為0、undefined、null、false,則a = c

在強型別語言中:”b || c“是一個表示式,只會返回true或者false,然後再賦給a

二、
申明變數a
a = 0 && 100;
a = 1 && 100;
a = 2 && 100;
在JS中,結果為0、100、100
在JAVA、C中,結果為0,、1、1

以a = b && c為例:
在js中,如果b為0、undefined、null、false,則a = b,“&&”後面的不執行
如果b不為0、undefined、null、false,則a = c

在強型別語言中:返回表示式b && c的結果,true或者false

根據以上的特性,可以寫一些非常簡潔的JS語句。
1、下面是函式的預設引數寫法,如果沒有傳參,則num等於100.
function f(num)
{
num = num || 100;
alert(num)
}
2、如果func1返回false,則執行func2,a等於func2的返回值,如果返回true則不執行func2.
a = func1() || func2();

3、如果func1返回false,則不執行func2,如果返回true則執行func2,a等於func2的返回值。
a = func1() && func2();

4、a = func1() || b等等

根據自己的需要,編排變數以及函式到"||"、"&&"表示式中,可以省去很多繁瑣的判斷語句與大括號。