昨天在看Ext的源碼時發現了以下代碼attributes = attributes || {};一直以為js中的邏輯操作符返回的結果是boolean值即true或false,查了下文檔才發現其實不然.
js的邏輯操作符有3種,即邏輯與(&&),邏輯或(||)和邏輯非(!).邏輯非始終返回一個boolean值,即true或false.而邏輯與和邏輯或則不一定返回boolean值.查了下文檔才明白邏輯與和邏輯或執行的規則:
邏輯與(&&):
1.先執行左邊的表達式,得到該表達式的值.
2.嘗試將該值轉換成boolean.
3.如果2的結果是false,則返回1中得到的值(如果該值不是false,而是一個其他的值,比如是個對象,則將返回這個對象而不是false),執行完畢.
4.如果2的結果是true,執行右邊表達式并得到值.
5.返回4中得到的值.
邏輯或(||):
1.先執行左邊的表達式,得到該表達式的值.
2.嘗試將該值轉換成boolean.
3.如果2的結果是true,則返回1中得到的值,執行完畢.
4.如果2的結果是false,執行右邊表達式并得到值.
5.返回4中得到的值.
總結:邏輯與如果左邊是false,則整個表達式的值是左邊表達式的值,如果為true,則整個表達式的值是右邊表達式的值.
邏輯或如果左邊是true,則整個表達式的值是左邊表達式的值,如果為false,則整個表達式的值是右邊表達式的值.
posted on 2008-03-13 10:30
zhangchao 閱讀(823)
評論(1) 編輯 收藏 所屬分類:
javascript