JavaScript高級(jí)程序設(shè)計(jì)閱讀筆記(六) ECMAScript中的運(yùn)算符(二)
更新時(shí)間:2012年02月27日 23:41:45 作者:
ECMAScript中的運(yùn)算符,學(xué)習(xí)js的朋友可以參考下
2.9.5、加性運(yùn)算符
加性運(yùn)算符(即加號(hào)和減號(hào))通常是最簡(jiǎn)單的運(yùn)算符,不過(guò)在ECMAScript中,每個(gè)加性運(yùn)算符都有大量的特殊行為。
1、加法運(yùn)算符:
var iResult=1+2;
console.log(iResult);//outputs 3
特殊性:
某個(gè)運(yùn)算數(shù)是NaN,結(jié)果為NaN
Infinity加Infinity,結(jié)果為Infinity
-Infinity加-Infinity,結(jié)果為-Infinity
Infinity加-Infinity,結(jié)果為NaN
如果兩個(gè)運(yùn)算數(shù)都是字符串,把第二個(gè)字符串連接到第一個(gè)字符串上
如果只有一個(gè)運(yùn)算數(shù)是字符串,把另一個(gè)運(yùn)算數(shù)轉(zhuǎn)換為字符串,結(jié)果是兩個(gè)字符串連接成的字符串
示例:
var iResult2=NaN+1;
console.log(iResult2);//NaN
var iResult3=Infinity+Infinity;
console.log(iResult3);//Infinity
var iResult4=-Infinity-Infinity;
console.log(iResult4);//-Infinity
var iResult5="abc"+"bcd";
console.log(iResult5);//abcbcd
var iResult6=5+"5";
console.log(iResult6);//55
2、減法運(yùn)算符:
var iResult=2-1;
console.log(iResult);//1
特殊性:
某個(gè)運(yùn)算數(shù)是NaN,結(jié)果為NaN
Infinity減Infinity,結(jié)果為NaN
-Infinity減-Infinity,結(jié)果為NaN
Infinity減-Infinity,結(jié)果為Infinity
-Infinity減-Infinity,結(jié)果為-Infinity
如果兩個(gè)運(yùn)算數(shù)都是字符串,結(jié)果為NaN
如果只有一個(gè)運(yùn)算數(shù)是字符串,把字符串轉(zhuǎn)換為數(shù)字再進(jìn)行運(yùn)算
示例:
var iResult2=NaN-1;
console.log(iResult2);//NaN
var iResult3=Infinity-Infinity;
console.log(iResult3);//NaN
var iResult4=-Infinity-(-Infinity);
console.log(iResult4);//NaN
var iResult5=-Infinity-Infinity;
console.log(iResult5);//-Infinity
var iResult6=Infinity-(-Infinity);
console.log(iResult6);//Infinity
var iResult7="abc"-"a";
console.log(iResult7);//NaN
var iResult8="5"-5;
console.log(iResult8);//0
var iResult9="a"-5;
console.log(iResult9);//NaN
2.9.6、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符<、>、<=、>=執(zhí)行的是兩個(gè)數(shù)字的比較運(yùn)算,返回的是一個(gè)Boolean值。如果兩個(gè)操作數(shù)都是字符串,則逐一比較兩個(gè)字符串的ASC碼,如果只有一方是字符串,則把字符串轉(zhuǎn)換為數(shù)字后比較,示例如下:
var bResult=2<1;
console.log(bResult);//false
var bResult="B"<"a";
console.log(bResult);//true
var bResult="b"<"a";
console.log(bResult);//false
var bResult="13"<"2";
console.log(bResult);//true
var bResult=13<"2";
console.log(bResult);//false
var bResult=-1<"a";
console.log(bResult);//false
第17行的代碼中,"a"被轉(zhuǎn)換為數(shù)字時(shí)返回的是NaN,任何包含NaN的關(guān)系運(yùn)算都要返回false。
2.9.7、等性運(yùn)算符
1、等號(hào)和非等號(hào)
在ECMAScript中,等號(hào)(==)及非等號(hào)(!=)都返回Boolean值。為確定兩個(gè)運(yùn)算數(shù)是否相等,這兩個(gè)運(yùn)算數(shù)都會(huì)進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則如下:
如果一個(gè)運(yùn)算數(shù)是Boolean值,在檢查相等性之前,把它轉(zhuǎn)換成數(shù)字值。false轉(zhuǎn)換成0,true轉(zhuǎn)換成1。
如果一個(gè)運(yùn)算數(shù)是字符串,另一個(gè)運(yùn)算數(shù)是數(shù)字,在檢查相等性之前,要嘗試把字符串轉(zhuǎn)換成數(shù)字。
如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是字符串,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成字符串。
如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成數(shù)字。
在進(jìn)行比較時(shí),運(yùn)算符還遵循還列規(guī)則:
值null和undefined相等
在檢查相等性時(shí),不能把null和undefined轉(zhuǎn)換成其他值。
如果某個(gè)運(yùn)算數(shù)是NaN,等號(hào)將返回false,非等號(hào)將返回true。重要提示:即使兩個(gè)運(yùn)算數(shù)都是NaN,等號(hào)仍返回false,因?yàn)楦鶕?jù)規(guī)則,NaN不等于NaN。
如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,那么比較的是它們的引用值。如果兩個(gè)運(yùn)算數(shù)把向同一個(gè)對(duì)象,那么等號(hào)返回true,否則兩個(gè)運(yùn)算數(shù)不等。
示例:
console.log(null==undefined);//true
console.log("NaN"==NaN);//false
console.log(5==NaN);//false
console.log(NaN==NaN);//false
console.log(NaN!=NaN);//true
console.log(false==0);//true
console.log(true==1);//true
console.log(true==2);//false
console.log(undefined==0);//false
console.log(null==0);//false
console.log("5"==5);//true
2、全等號(hào)和非全等號(hào)
等號(hào)和非等號(hào)的同類運(yùn)算符是全等號(hào)和非全等號(hào)。這兩個(gè)運(yùn)算符所做的與等號(hào)和非等號(hào)相同,只是它們?cè)跈z查相等性前,不執(zhí)行類型轉(zhuǎn)換。全等號(hào)由三個(gè)等號(hào)(===)表示,非全等號(hào)由感嘆號(hào)加兩個(gè)等號(hào)(!==)表示,只有在無(wú)需類型轉(zhuǎn)換運(yùn)算數(shù)就相等的情況下,才返回true。例如:
console.log("55"==55);//true
console.log("55"===55);//false
console.log("55"!=55);//false
console.log("55"!==55);//true
2.9.8、條件運(yùn)算符
條件運(yùn)算符跟其他語(yǔ)言中的相同:varialbe=boolean_expression?true_value:false_value;
示例:
function Max(iNum1,iNum2){
return iNum1>=iNum2?iNum1:iNum2;
}
console.log(Max(1,3));//3
console.log(Max(3,1));//3
2.9.9、賦值運(yùn)算符
簡(jiǎn)單的賦值運(yùn)算符由等號(hào)(=)實(shí)現(xiàn),只是把等號(hào)右邊的值賦予等號(hào)左邊的變量,例如:
var iNum=10;
復(fù)合賦值運(yùn)算是由乘性運(yùn)算符、加性運(yùn)算符或位移運(yùn)算符加等號(hào)(=)實(shí)現(xiàn)的。這些賦值運(yùn)算符是下列這些常見情況的縮寫形式:
var iNum=10;
iNum=iNum+10;
//等同于
var iNum=10;
iNum+=10;
每種主要的算術(shù)運(yùn)算及其他幾個(gè)運(yùn)算都有復(fù)合賦值運(yùn)算符:
乘法/賦值(*=)
除法/賦值(/=)
取模/賦值(%=)
加法/賦值(+=)
減法/賦值(-=)
左移/賦值(<<=)
有符號(hào)右移/賦值(>>=)
無(wú)符號(hào)右移/賦值(>>>=)
2.9.10、逗號(hào)運(yùn)算符
用逗號(hào)運(yùn)算符可以在一條語(yǔ)句中執(zhí)行多個(gè)運(yùn)算。例如:
var iNum=1,iNum2=2,iNum3=3;
逗號(hào)運(yùn)算符最常用于變量聲明中。
加性運(yùn)算符(即加號(hào)和減號(hào))通常是最簡(jiǎn)單的運(yùn)算符,不過(guò)在ECMAScript中,每個(gè)加性運(yùn)算符都有大量的特殊行為。
1、加法運(yùn)算符:
復(fù)制代碼 代碼如下:
var iResult=1+2;
console.log(iResult);//outputs 3
特殊性:
某個(gè)運(yùn)算數(shù)是NaN,結(jié)果為NaN
Infinity加Infinity,結(jié)果為Infinity
-Infinity加-Infinity,結(jié)果為-Infinity
Infinity加-Infinity,結(jié)果為NaN
如果兩個(gè)運(yùn)算數(shù)都是字符串,把第二個(gè)字符串連接到第一個(gè)字符串上
如果只有一個(gè)運(yùn)算數(shù)是字符串,把另一個(gè)運(yùn)算數(shù)轉(zhuǎn)換為字符串,結(jié)果是兩個(gè)字符串連接成的字符串
示例:
復(fù)制代碼 代碼如下:
var iResult2=NaN+1;
console.log(iResult2);//NaN
var iResult3=Infinity+Infinity;
console.log(iResult3);//Infinity
var iResult4=-Infinity-Infinity;
console.log(iResult4);//-Infinity
var iResult5="abc"+"bcd";
console.log(iResult5);//abcbcd
var iResult6=5+"5";
console.log(iResult6);//55
2、減法運(yùn)算符:
復(fù)制代碼 代碼如下:
var iResult=2-1;
console.log(iResult);//1
特殊性:
某個(gè)運(yùn)算數(shù)是NaN,結(jié)果為NaN
Infinity減Infinity,結(jié)果為NaN
-Infinity減-Infinity,結(jié)果為NaN
Infinity減-Infinity,結(jié)果為Infinity
-Infinity減-Infinity,結(jié)果為-Infinity
如果兩個(gè)運(yùn)算數(shù)都是字符串,結(jié)果為NaN
如果只有一個(gè)運(yùn)算數(shù)是字符串,把字符串轉(zhuǎn)換為數(shù)字再進(jìn)行運(yùn)算
示例:
復(fù)制代碼 代碼如下:
var iResult2=NaN-1;
console.log(iResult2);//NaN
var iResult3=Infinity-Infinity;
console.log(iResult3);//NaN
var iResult4=-Infinity-(-Infinity);
console.log(iResult4);//NaN
var iResult5=-Infinity-Infinity;
console.log(iResult5);//-Infinity
var iResult6=Infinity-(-Infinity);
console.log(iResult6);//Infinity
var iResult7="abc"-"a";
console.log(iResult7);//NaN
var iResult8="5"-5;
console.log(iResult8);//0
var iResult9="a"-5;
console.log(iResult9);//NaN
2.9.6、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符<、>、<=、>=執(zhí)行的是兩個(gè)數(shù)字的比較運(yùn)算,返回的是一個(gè)Boolean值。如果兩個(gè)操作數(shù)都是字符串,則逐一比較兩個(gè)字符串的ASC碼,如果只有一方是字符串,則把字符串轉(zhuǎn)換為數(shù)字后比較,示例如下:
復(fù)制代碼 代碼如下:
var bResult=2<1;
console.log(bResult);//false
var bResult="B"<"a";
console.log(bResult);//true
var bResult="b"<"a";
console.log(bResult);//false
var bResult="13"<"2";
console.log(bResult);//true
var bResult=13<"2";
console.log(bResult);//false
var bResult=-1<"a";
console.log(bResult);//false
第17行的代碼中,"a"被轉(zhuǎn)換為數(shù)字時(shí)返回的是NaN,任何包含NaN的關(guān)系運(yùn)算都要返回false。
2.9.7、等性運(yùn)算符
1、等號(hào)和非等號(hào)
在ECMAScript中,等號(hào)(==)及非等號(hào)(!=)都返回Boolean值。為確定兩個(gè)運(yùn)算數(shù)是否相等,這兩個(gè)運(yùn)算數(shù)都會(huì)進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則如下:
如果一個(gè)運(yùn)算數(shù)是Boolean值,在檢查相等性之前,把它轉(zhuǎn)換成數(shù)字值。false轉(zhuǎn)換成0,true轉(zhuǎn)換成1。
如果一個(gè)運(yùn)算數(shù)是字符串,另一個(gè)運(yùn)算數(shù)是數(shù)字,在檢查相等性之前,要嘗試把字符串轉(zhuǎn)換成數(shù)字。
如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是字符串,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成字符串。
如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成數(shù)字。
在進(jìn)行比較時(shí),運(yùn)算符還遵循還列規(guī)則:
值null和undefined相等
在檢查相等性時(shí),不能把null和undefined轉(zhuǎn)換成其他值。
如果某個(gè)運(yùn)算數(shù)是NaN,等號(hào)將返回false,非等號(hào)將返回true。重要提示:即使兩個(gè)運(yùn)算數(shù)都是NaN,等號(hào)仍返回false,因?yàn)楦鶕?jù)規(guī)則,NaN不等于NaN。
如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,那么比較的是它們的引用值。如果兩個(gè)運(yùn)算數(shù)把向同一個(gè)對(duì)象,那么等號(hào)返回true,否則兩個(gè)運(yùn)算數(shù)不等。
示例:
復(fù)制代碼 代碼如下:
console.log(null==undefined);//true
console.log("NaN"==NaN);//false
console.log(5==NaN);//false
console.log(NaN==NaN);//false
console.log(NaN!=NaN);//true
console.log(false==0);//true
console.log(true==1);//true
console.log(true==2);//false
console.log(undefined==0);//false
console.log(null==0);//false
console.log("5"==5);//true
2、全等號(hào)和非全等號(hào)
等號(hào)和非等號(hào)的同類運(yùn)算符是全等號(hào)和非全等號(hào)。這兩個(gè)運(yùn)算符所做的與等號(hào)和非等號(hào)相同,只是它們?cè)跈z查相等性前,不執(zhí)行類型轉(zhuǎn)換。全等號(hào)由三個(gè)等號(hào)(===)表示,非全等號(hào)由感嘆號(hào)加兩個(gè)等號(hào)(!==)表示,只有在無(wú)需類型轉(zhuǎn)換運(yùn)算數(shù)就相等的情況下,才返回true。例如:
復(fù)制代碼 代碼如下:
console.log("55"==55);//true
console.log("55"===55);//false
console.log("55"!=55);//false
console.log("55"!==55);//true
2.9.8、條件運(yùn)算符
條件運(yùn)算符跟其他語(yǔ)言中的相同:varialbe=boolean_expression?true_value:false_value;
示例:
復(fù)制代碼 代碼如下:
function Max(iNum1,iNum2){
return iNum1>=iNum2?iNum1:iNum2;
}
console.log(Max(1,3));//3
console.log(Max(3,1));//3
2.9.9、賦值運(yùn)算符
簡(jiǎn)單的賦值運(yùn)算符由等號(hào)(=)實(shí)現(xiàn),只是把等號(hào)右邊的值賦予等號(hào)左邊的變量,例如:
var iNum=10;
復(fù)合賦值運(yùn)算是由乘性運(yùn)算符、加性運(yùn)算符或位移運(yùn)算符加等號(hào)(=)實(shí)現(xiàn)的。這些賦值運(yùn)算符是下列這些常見情況的縮寫形式:
復(fù)制代碼 代碼如下:
var iNum=10;
iNum=iNum+10;
//等同于
var iNum=10;
iNum+=10;
每種主要的算術(shù)運(yùn)算及其他幾個(gè)運(yùn)算都有復(fù)合賦值運(yùn)算符:
乘法/賦值(*=)
除法/賦值(/=)
取模/賦值(%=)
加法/賦值(+=)
減法/賦值(-=)
左移/賦值(<<=)
有符號(hào)右移/賦值(>>=)
無(wú)符號(hào)右移/賦值(>>>=)
2.9.10、逗號(hào)運(yùn)算符
用逗號(hào)運(yùn)算符可以在一條語(yǔ)句中執(zhí)行多個(gè)運(yùn)算。例如:
var iNum=1,iNum2=2,iNum3=3;
逗號(hào)運(yùn)算符最常用于變量聲明中。
您可能感興趣的文章:
- JavaScript ECMA-262-3 深入解析(一):執(zhí)行上下文實(shí)例分析
- JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(七) ECMAScript中的語(yǔ)句
- JavaScript高級(jí)程序設(shè)計(jì)閱讀筆記(五) ECMAScript中的運(yùn)算符(一)
- JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(四) ECMAScript中的類型轉(zhuǎn)換
- 《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(三) ECMAScript中的引用類型
- 《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(二) ECMAScript中的原始類型
- 《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(一) ECMAScript基礎(chǔ)
- JavaScript ECMA-262-3 深入解析.第三章.this
- JavaScript ECMA-262-3 深入解析(二):變量對(duì)象實(shí)例詳解
相關(guān)文章
JS記錄用戶登錄次數(shù)實(shí)現(xiàn)代碼
當(dāng)?shù)卿洿螖?shù)達(dá)到三次,就自動(dòng)調(diào)用函數(shù),隱藏彈出框。下面是具體的實(shí)現(xiàn),感興趣的朋友可以參考下2014-01-01
微信小程序wx.uploadfile 本地文件轉(zhuǎn)base64的實(shí)現(xiàn)代碼
這篇文章主要介紹了微信小程序wx.uploadfile 本地文件轉(zhuǎn)base64的實(shí)現(xiàn)方法,文中通過(guò)代碼講解給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
百度地圖去掉marker覆蓋物或者去掉maker的label文字方法
下面小編就為大家分享一篇百度地圖去掉marker覆蓋物或者去掉maker的label文字方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
詳解JavaScript如何實(shí)現(xiàn)四種常用排序
這篇文章主要為大家介紹了如何利用JavaScript實(shí)現(xiàn)四個(gè)常用的排序:插入排序、交換排序、選擇排序和歸并排序,文中利用動(dòng)圖詳細(xì)介紹了實(shí)現(xiàn)過(guò)程,需要的可以參考一下2022-02-02
element-ui 上傳圖片后標(biāo)注坐標(biāo)點(diǎn)
有個(gè)組件庫(kù)的名稱叫做element-ui,基于Vue2.0開發(fā),提供了豐富的PC端組件,本文通過(guò)實(shí)例代碼給大家介紹element-ui 上傳圖片后標(biāo)注坐標(biāo)點(diǎn)的示例代碼,感興趣的朋友跟隨小編一起看看吧2021-07-07
JavaScript樹形數(shù)據(jù)結(jié)構(gòu)處理
這篇文章主要介紹了JavaScript樹形數(shù)據(jù)結(jié)構(gòu)處理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
利用Vconsole和Fillder進(jìn)行移動(dòng)端抓包調(diào)試方法
這篇文章主要介紹了利用Vconsole和Fillder進(jìn)行移動(dòng)端抓包調(diào)試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
微信小程序使用scroll-view標(biāo)簽實(shí)現(xiàn)自動(dòng)滑動(dòng)到底部功能的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了微信小程序使用scroll-view標(biāo)簽實(shí)現(xiàn)自動(dòng)滑動(dòng)到底部功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-11-11

