javascript &&和||運算法的另類使用技巧
更新時間:2009年11月28日 02:01:20 作者:
一直以為 && 和 || 這兩個偉大的運算法只能在判斷表達式使用,也就是常在if語句使用,原來錯了,它還可以運用在簡化選擇性執(zhí)行語句的操作,有點拗口,簡單點也就是:操作執(zhí)行某條語句,不執(zhí)行某條語句。
&&和||在JQuery源代碼內尤為使用廣泛,由于本人沒有系統(tǒng)的學習js,所以只能粗略的自我理解出來,希望大家指點下。
粗略理解如下:
a() && b() :如果執(zhí)行a()后返回true,則執(zhí)行b()并返回b的值;如果執(zhí)行a()后返回false,則整個表達式返回a()的值,b()不執(zhí)行;
a() || b() :如果執(zhí)行a()后返回true,則整個表達式返回a()的值,b()不執(zhí)行;如果執(zhí)行a()后返回false,則執(zhí)行b()并返回b()的值;
&& 優(yōu)先級高于 ||
如下:
代碼
alert((1 && 3 || 0) && 4); //結果4 ①
alert(1 && 3 || 0 && 4); //結果3 ②
alert(0 && 3 || 1 && 4); //結果4 ③
分析:
語句①:1&&3 返回3 => 3 || 0 返回 3 => 3&&4 返回 4
語句②:先執(zhí)行1&&3 返回3,在執(zhí)行0&&4返回0,最后執(zhí)行結果比較 3||0 返回 3
語句③:先執(zhí)行0&&3 返回0,在執(zhí)行1&&4返回4,最后執(zhí)行結果比較 0||4 返回 4
注:非0的整數(shù)都為true,undefined、null和空字符串"" 為false。
粗略理解如下:
a() && b() :如果執(zhí)行a()后返回true,則執(zhí)行b()并返回b的值;如果執(zhí)行a()后返回false,則整個表達式返回a()的值,b()不執(zhí)行;
a() || b() :如果執(zhí)行a()后返回true,則整個表達式返回a()的值,b()不執(zhí)行;如果執(zhí)行a()后返回false,則執(zhí)行b()并返回b()的值;
&& 優(yōu)先級高于 ||
如下:
代碼
復制代碼 代碼如下:
alert((1 && 3 || 0) && 4); //結果4 ①
alert(1 && 3 || 0 && 4); //結果3 ②
alert(0 && 3 || 1 && 4); //結果4 ③
分析:
語句①:1&&3 返回3 => 3 || 0 返回 3 => 3&&4 返回 4
語句②:先執(zhí)行1&&3 返回3,在執(zhí)行0&&4返回0,最后執(zhí)行結果比較 3||0 返回 3
語句③:先執(zhí)行0&&3 返回0,在執(zhí)行1&&4返回4,最后執(zhí)行結果比較 0||4 返回 4
注:非0的整數(shù)都為true,undefined、null和空字符串"" 為false。
相關文章
javascript數(shù)字數(shù)組去重復項的實現(xiàn)代碼
console.log 不支持ie,下面的代碼需要在火狐中測試,不然會有問題。2010-12-12(JS實現(xiàn))MapBar中坐標的加密和解密的腳本
(JS實現(xiàn))MapBar中坐標的加密和解密的腳本...2007-05-05mysql輸出數(shù)據(jù)賦給js變量報unterminated string literal錯誤原因
mysql 數(shù)據(jù)庫數(shù)據(jù)賦給js變量報unterminated string literal錯誤原因2010-05-05