国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 桐梓县| 华亭县| 茌平县| 阜新| 双辽市| 聊城市| 个旧市| 公安县| 澄迈县| 开原市| 奈曼旗| 井研县| 商城县| 互助| 莱阳市| 都匀市| 延庆县| 宁夏| 鄂托克前旗| 云安县| 南岸区| 长垣县| 克什克腾旗| 沿河| 长汀县| 昆山市| 镇原县| 会理县| 苍南县| 横峰县| 噶尔县| 康保县| 安达市| 崇义县| 盐亭县| 鄂尔多斯市| 专栏| 枝江市| 图木舒克市| 乌兰浩特市| 安国市|