- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- 一篇文章弄懂ECMAScript中的操作符
只能操作一個(gè)值的操作符叫做一元操作符
遞增和遞減。遞增和遞減操作符借鑒自C,而且有兩個(gè)版本:前置型和后置型
var age = 29; var anotherAge = --age + 2 console.log(age) // 28 console.log(anotherAge) // 30
后置型:操作符位于要操作的變量之后。后置型遞增和遞減操作是在包含它們的語(yǔ)句被求值之后才執行的
var num1 - 2; var num2 = 20 var num3 = num1-- + num2; // 22 var num4 = num1 + num2; // 21
以上4個(gè)操作符對任何值都適用,即可以用于字符串、布爾值、浮點(diǎn)數值和對象。遵循下列規則:
上述規則驗證:
var s1 = "2"; var s2 = "z"; var b = false; var f = 1.1; var o = { valueOf: function () { return -1 } } console.log(s1++); // 2 console.log(s1); // 3 console.log(s2++); // NaN console.log(s2); // NaN console.log(b++); // 0 console.log(b); // 1 console.log(f--); // 1.1 console.log(f); // 0.1000000000000009 console.log(o--); // -1 console.log(o); // -2
一元加和減操作符
一元加和減操作符主要用于基本的算術(shù)運算,也可以用于轉換數據類(lèi)型,即在對非數值應用一元操作符時(shí),該操作符會(huì )像Number()轉型函數一樣對這個(gè)值執行轉換。布爾值false和true將被轉換為0和1,字符串值會(huì )被按照一組特殊的規則進(jìn)行解析,對象是先調用它們的valueOf()或toString()方法,再轉換得到的值。以一元加操作符為例:
var s1 = "01"; var s2 = "1.1"; var s3 = "z"; var b = false; var f = 1.1; var o = { valueOf: function () { return -1 } } s1 = +s1 s2 = +s2 s3 = +s3 b = +b f = +f o = +o console.log(s1) // 1 console.log(s2) // 1.1 console.log(s3) // NaN console.log(b) // 0 console.log(f) // 1.1 console.log(o) // -1
布爾操作符一共有3個(gè):非(NOT)、與(AND)和或(OR)
1、邏輯非。由一個(gè)英文嘆號(!)表示,可以用于ECMAScript中的任何值。無(wú)論操作數是個(gè)什么數據類(lèi)型,這個(gè)操作符都會(huì )返回一個(gè)布爾值。邏輯非操作符首先會(huì )將它的操作數轉換為一個(gè)布爾值,然后對其求反。遵循一下規則
console.log(!false); // true console.log(!"blue"); // false console.log(!""); // true console.log(!0); // true console.log(!undefined); // true console.log(!null); // true console.log(!NaN); // true console.log(!12345); false
2、邏輯與。操作符由兩個(gè)和號(&&)表示,有兩個(gè)操作數。邏輯與操作可以應用與任何類(lèi)型的操作數,而不僅僅是布爾值。在有一個(gè)操作數不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時(shí),它遵循以下規則:
邏輯與操作屬于短路操作,即如果第一個(gè)操作數能夠決定結果,那么就不會(huì )再對第二個(gè)操作數求值
3、邏輯或。操作符由兩個(gè)豎線(xiàn)符號(||)表示,有兩個(gè)操作數。與邏輯與操作相似,如果有一個(gè)操作數不是布爾值,邏輯或也不一定返回布爾值;此時(shí),它遵循以下規則:
與邏輯與操作符相似,邏輯或操作符也是短路操作。也就是說(shuō),如果第一個(gè)操作數的求值結果為true,就不會(huì )對第二個(gè)操作數求值了
ECMAScript定義了3個(gè)乘性操作符:乘法、除法和求模。如果參與乘性計算的某個(gè)操作數不是數值,后臺會(huì )先使用Number()轉型函數將其轉換為數值,如:空字符串將被當作0,布爾值true將被當作1
1、乘法。操作符由一個(gè)星號(*)表示,用于計算兩個(gè)數值的乘積。在處理特殊值情況下,乘法操作符遵循下列特殊的規則:
2、除法。操作符由一個(gè)斜線(xiàn)符號(/)表示,執行第二個(gè)操作數除第一個(gè)操作數的計算。遵循一下規則:
3、求模(余數)。操作符由一個(gè)百分號(%)表示。遵循以下規則:
與乘性操作符類(lèi)似,加性操作符也會(huì )在后臺轉換不同的數據類(lèi)型。
1、加法。加法操作符由加號(+)表示。如果兩個(gè)操作數都是數值,執行常規的加法計算,然后根據下列規則返回結果:
如果有一個(gè)操作數是字符串,那么就要應用如下規則:
2、減法。減法操作符由減號(-)表示,與加法操作符類(lèi)似,遵循以下規則:
var result1 = 5 - true var result2 = NaN - 1 var result3 = 5 - 3 var result4 = 5 - "" var result5 = 5 - "2" var result6 = 5 - null console.log(result1) // 4, true被轉換為1 console.log(result2) // NaN console.log(result3) // 2 console.log(result4) // 5, 空字符串被轉換為0 console.log(result5) // 3,字符串2被轉換為數字2 console.log(result6) // 5,因為null被轉換為了0
關(guān)系操作符有小于(<)、大于(>)、小于等于(<=)和大于等于(>=)四個(gè)關(guān)系比較。當關(guān)系操作符的操作數使用了非數值時(shí),也要進(jìn)行數據轉換或完成某些奇怪的操作。相應規則如下:
在比較字符串時(shí),實(shí)際比較的是兩個(gè)字符串中對應位置的每個(gè)字符的字符編碼值。經(jīng)過(guò)這么一番比較之后,再返回一個(gè)布爾值。大寫(xiě)字母的字符編碼小于小寫(xiě)字母的字符編碼。
兩組操作符:相等和不相等——先轉換再比較;全等和不全等——僅比較而不轉換
1、相等和不相等。相等操作符由兩個(gè)等于號(==)表示,如果兩個(gè)操作數相等,則返回true;不相等操作符由嘆號后跟等于號(!=)表示,如果兩個(gè)操作數不相等,則返回true。這兩個(gè)操作符都會(huì )先轉換操作數(通常稱(chēng)為強制轉型),然后再比較它們的相等性。在轉換不同數據類(lèi)型時(shí),遵循以下基本規則:
這兩個(gè)操作符在進(jìn)行比較時(shí)要遵循下列規則
2、全等和不全等。全等操作符由3個(gè)等于號(===)表示,它只在兩個(gè)操作數未經(jīng)轉換就相等的情況下返回true。不全等操作符有一個(gè)嘆號后跟兩個(gè)等于號(!==)表示,它在兩個(gè)操作數未經(jīng)轉換就不相等的情況下返回true。
var result1 = ("55" == 55) var result2 = ("55" === 55) var result3 = ("55" != 55) var result4 = ("55" !== 55) console.log(result1) // true console.log(result2) // false console.log(result3) // false console.log(result4) // true
語(yǔ)法:var max = (num1 > num2) ? num1 : num2
以上例子中,max中將會(huì )保存一個(gè)最大的值,表達式的意思是:如果num1大于num2(關(guān)系表達式返回true),則將num1的值賦給max;如果num1小于或等于num2(關(guān)系表達式返回false),則將num2的值賦給max
賦值操作符由等于號(=)表示,其作用就是把右側的值賦給左側的變量。如果在等號前面再添加乘性操作符、加性操作符或位操作符,就可以完成復合賦值操作。每個(gè)主要的算術(shù)操作符(以及個(gè)別的其他操作符)都有對應的復合賦值操作符。這些操作符如下所示:
逗號操作符可以在一條語(yǔ)句中執行多個(gè)操作,如:var num1=1, num2=2, num3=3;
。
逗號操作符還可以用于賦值,在用于賦值時(shí),逗號操作符總會(huì )返回表達式中的最后一項。如:var num= (5, 6, 1, 4, 7, 0); // num值為0
到此這篇關(guān)于ECMAScript中操作符的文章就介紹到這了,更多相關(guān)ECMAScript操作符內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站