1. 程式人生 > >JS && || 陷阱 javascript 邏輯與、邏輯或 【轉】

JS && || 陷阱 javascript 邏輯與、邏輯或 【轉】

第一個 def null eof OS 與運算 scrip pos 一個

通常來說邏輯運算a&&b和a||b分別是邏輯與運算和邏輯或運算,返回的是一個布爾值,要麽為true,要麽為false。 比如在PHP裏面a&&b返回類型永遠是布爾值,非true即false。 而Javascript中中&& ||是一個陷阱,JS裏面的&&和||有點不走尋常路。 總結JS && ||的規律:下面的a和b分別可以是一個值、一個變量、一個表達式。
  • JS對於邏輯與運算a&&b,如果a不成立(運算後結果是false,null,‘‘,0,undefined等值,下同)則返回a,如果a成立則返回b,如果使用&&連接了多個表達式,如果每個表達式都成立,則返回最後一個表達式的運算結果,如果有至少一個不成立,則返第一個不成立的表達式的運算結果
  • JS對於邏輯或運算a||b,則是從左邊開始,返回第一個成立的表達式的運算結果,如果全部不成立則返回最後一個表達式的運算結果。
  • &&優先級高於||,先運算&&再用&&運算的結果去||運算。
看以下代碼 var a=0&&-1 //得到0 var b=3&&4; //得到4 var c=0&&1&&2; //得到0 var d=1&&0&&2; //得到0 var e=1&&2&&3//得到3 var f=0&&false&&‘‘&&1 //返回0 var g=0||1; //得到1 var h=1||0; //得到1alert(typeof(0||false||‘‘));//返回string var i=1||2&&3 //返回1 var j=1&&2||3 //返回2

JS && || 陷阱 javascript 邏輯與、邏輯或 【轉】