国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JS的&&和&,||和|運(yùn)算符兩個(gè)不同點(diǎn)

2024-09-06 12:40:54
字體:
供稿:網(wǎng)友
1.性能上的比較

如果&&的第一個(gè)運(yùn)算數(shù)是false,就不再考慮第二個(gè)運(yùn)算數(shù),直接返回false;如果||的第一個(gè)運(yùn)算數(shù)是true,也不再考慮第二個(gè)運(yùn)算數(shù),直接返回true。&和|運(yùn)算符卻不是這樣的,它們總是要比較兩個(gè)運(yùn)算數(shù)才得出結(jié)果,因而性能上&&和||會(huì)比&和|好。

由于&&和||可能不考慮第二個(gè)運(yùn)算數(shù),所以我們應(yīng)盡量避免在它們右邊使用具有副作用(賦值、遞增、遞減和函數(shù)調(diào)用)的表達(dá)式,除非非常清楚自己再做什么。

if((a == null) && (b++ >10)) stop(); //b++遞增運(yùn)算可能不被執(zhí)行
if((b++ >10) && (a == null)) stop(); //保證b++遞增運(yùn)算都被執(zhí)行

2.逐位運(yùn)算

&和|除了可以進(jìn)行"邏輯運(yùn)算"[1]外,還可以進(jìn)行逐位運(yùn)算,而&&和||只能進(jìn)行邏輯運(yùn)算。

3.js的&和|與c#的&和|

在js中,&和|只是逐位運(yùn)算符,而在c#中,&和|既是邏輯運(yùn)算符,又是位運(yùn)算,通過以下代碼可以看出。

document.write(true & false); //js,結(jié)果為0
document.write(1 & 0); //js,結(jié)果為0
bool a = true & false; //c#,結(jié)果為false
int b = 1 & 0; //結(jié)果為0


注[1]:&和|本是逐位運(yùn)算符,之所以可以進(jìn)行"邏輯運(yùn)算",是由于js是無類型的語言、各數(shù)據(jù)類型可以自由轉(zhuǎn)換這一特性決定的,當(dāng)用&和|進(jìn)行"邏輯運(yùn)算"時(shí),實(shí)際上true被轉(zhuǎn)換成1,false被轉(zhuǎn)換成0,再進(jìn)行逐位運(yùn)算。也正是由于&和|是逐位運(yùn)算符,才出現(xiàn)了第一點(diǎn)中所說的,它們總是要比較兩個(gè)運(yùn)算數(shù)才得出結(jié)果,才導(dǎo)致性能會(huì)比&&和||低一些。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河池市| 景东| 保靖县| 聊城市| 沂源县| 孝感市| 长宁区| 南阳市| 丹凤县| 兰溪市| 丹江口市| 马山县| 靖安县| 常山县| 敦煌市| 安阳市| 达孜县| 马鞍山市| 吐鲁番市| 防城港市| 新绛县| 高州市| 久治县| 牙克石市| 寿光市| 茌平县| 武汉市| 临武县| 平原县| 江西省| 河北省| 永胜县| 蓝山县| 时尚| 景洪市| 株洲市| 盐城市| 慈利县| 吉安县| 珲春市| 三明市|