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