今天通過學(xué)習(xí)@wenrunchang123及@_雨落1226的博客事秀,了解到一個概念鸣皂,叫做短路運算飞袋。
首先,需要了解秉扑,在邏輯運算中,對應(yīng)boolean值為false的情況包括0调限,"",null,undefined,NaN,false;其余值都對應(yīng)true舟陆。
&&運算
a && b :?? 如果a表達(dá)式,不是布爾類型耻矮,先隱式轉(zhuǎn)換為布爾值秦躯,如果為true,無論b為true或者false,都返回b的值裆装;如果為false,則返回a的值
console.log(5-2 && 9);? [Web瀏覽器] "9"
console.log(false && 9);? [Web瀏覽器] "false"
||運算
a || b :? 通過隱式轉(zhuǎn)換得到a的boolean 值踱承,如果為true,則無論b的值為false或者true,都返回a的值米母;如果a的boolean值為false,則返回b的值
console.log(8-1 || 3); [Web瀏覽器] "7"
console.log(8-NaN || 3); [Web瀏覽器] "3"
&& 與 || 的優(yōu)先級比較
結(jié)論:&&運算優(yōu)先級高于||運算
console.log(3 && 9? || 3 &&7);??? [Web瀏覽器] "9"?? 先計算兩邊的&&運算勾扭,再計算中間的||運算;
()運算可以改變||運算的優(yōu)先級
console.log(3 && (9? || 3) &&7);??? [Web瀏覽器] "7"? ()運算改變了||運算的優(yōu)先級铁瞒,先計算||妙色,再計算&&