1、||(邏輯或)
只有前後都是false的時候才返回false,否則返回true。
前面2是true,後面1也是true,結果是2,
前面'a'是true,後面1也是true;測試結果是'a',
前面”是false,後面1是true,而返回結果是1。
前面'a'是true,而後面0是false,返回結果是'a',
前面”是false,後面0同樣是false,返回結果是0
前面0是false,後面”是false,返回結果是”
結論:
var
c=a()||b();
只要“||”前面爲false,不管“||”後面是true還是false,都返回“||”後面的值。
只要“||”前面爲true,不管“||”後面是true還是false,都返回“||”前面的值。
2.&&(邏輯與)
只有前後都是true的時候才返回true,否則返回false。
結是返回”,“&&”前面”是false,後面是1是true。
結是返回”,“&&”前面”是false,後面是0也是false。
結是返回1,“&&”前面”a是true,後面是1也是true。
結是返回0,“&&”前面”a是true,後面是0是false。
結是返回”,“&&”前面”a是true,後面是”是false。
結是返回0,“&&”前面”0是false,後面是'a'是true。
結是返回0,“&&”前面”0是false,後面是”也是false。
var
c=a()&&b();
a()
&& b() :如果執行a()後返回true,則執行b()並返回b的值;如果執行a()後返回false,則整個表達式返回a()的值,b()不執行;
只要“&&”前面是false,無論“&&”後面是true還是false,結果都將返“&&”前面的值;
只要“&&”前面是true,無論“&&”後面是true還是false,結果都將返“&&”後面的值;
在js邏輯運算中,0、”“、null、false、undefined、NaN都會判爲false,其他都爲true
&& 優先級高於 ||
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
語句②:先執行1&&3 返回3,在執行0&&4返回0,最後執行結果比較 3||0 返回 3
語句③:先執行0&&3 返回0,在執行1&&4返回4,最後執行結果比較 0||4 返回 4