91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ECMAScript中都有哪些操作符

發布時間:2021-07-09 11:20:25 來源:億速云 閱讀:169 作者:chen 欄目:開發技術

這篇文章主要講解了“ECMAScript中都有哪些操作符”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ECMAScript中都有哪些操作符”吧!

目錄
  • 一元操作符

  • 布爾操作符

  • 乘性操作符

  • 加性操作符

  • 關系操作符

  • 相等操作符

  • 條件操作符

  • 賦值操作符

  • 逗號操作符


一元操作符

只能操作一個值的操作符叫做一元操作符

遞增和遞減。遞增和遞減操作符借鑒自C,而且有兩個版本:前置型和后置型

  • 前置型:操作符位于要操作的變量之前。執行前置型遞增和遞減操作時,變量的值都是在語句被求值以前改變的

var age = 29;
var anotherAge = --age + 2
console.log(age) // 28
console.log(anotherAge) // 30

后置型:操作符位于要操作的變量之后。后置型遞增和遞減操作是在包含它們的語句被求值之后才執行的

var num1 - 2;
var num2 = 20
var num3 = num1-- + num2; // 22
var num4 = num1 + num2; // 21

以上4個操作符對任何值都適用,即可以用于字符串、布爾值、浮點數值和對象。遵循下列規則:

  • 在應用于一個包含有效數字字符的字符串時,先將其轉換為數字值,再執行加減1的操作。字符串變量變成數值變量

  • 在應用于一個不包含有數字字符的字符串時,將變量的值設置為NaN。字符串變量變成數值變量

  • 在應用于布爾值false時,先將其轉換為0再執行加減1的操作。布爾值變量變成數值變量

  • 在應用于布爾值true時,先將其轉換為0再執行加減1的操作。布爾值變量變成數值變量

  • 在應用于浮點數值時,執行加減1的操作

  • 在應用于對象時,先調用對象的valueOf()方法以取得一個可供操作的值,然后對該值應用上述規則。如果是NaN,則調用toString()方法后再應用上述規則。對象變量變成數值變量

上述規則驗證:

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

一元加和減操作符

一元加和減操作符主要用于基本的算術運算,也可以用于轉換數據類型,即在對非數值應用一元操作符時,該操作符會像Number()轉型函數一樣對這個值執行轉換。布爾值false和true將被轉換為0和1,字符串值會被按照一組特殊的規則進行解析,對象是先調用它們的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個:非(NOT)、與(AND)和或(OR)

1、邏輯非。由一個英文嘆號(!)表示,可以用于ECMAScript中的任何值。無論操作數是個什么數據類型,這個操作符都會返回一個布爾值。邏輯非操作符首先會將它的操作數轉換為一個布爾值,然后對其求反。遵循一下規則

  • 如果操作數是一個對象,返回false

  • 如果操作數是一個空字符串,返回true

  • 如果操作數是一個非空字符串,返回false

  • 如果操作數是數值0,返回true

  • 如果操作數是任意非0數值(包括Infinity),返回false

  • 如果操作數是null,返回true

  • 如果操作數是NaN,返回true

  • 如果操作數是undefined,返回true

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、邏輯與。操作符由兩個和號(&&)表示,有兩個操作數。邏輯與操作可以應用與任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時,它遵循以下規則:

  • 如果第一個操作數是對象,則返回第二個操作數

  • 如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象

  • 如果兩個操作數都是對象,則返回第二個操作數

  • 如果第一個操作數是null,則返回null

  • 如果第一個操作數是NaN,則返回NaN

  • 如果第一個操作數是undefined,則返回undefined

邏輯與操作屬于短路操作,即如果第一個操作數能夠決定結果,那么就不會再對第二個操作數求值

3、邏輯或。操作符由兩個豎線符號(||)表示,有兩個操作數。與邏輯與操作相似,如果有一個操作數不是布爾值,邏輯或也不一定返回布爾值;此時,它遵循以下規則:

  • 如果第一個操作數是對象,則返回第一個操作數

  • 如果第一個操作數的求值結果為false,則返回第二個操作數

  • 如果兩個操作數都是對象,則返回第一個操作數

  • 如果兩個操作數都是null,則返回null

  • 如果兩個操作數都是NaN,則返回NaN

  • 如果兩個操作數都是undefined,則返回undefined

與邏輯與操作符相似,邏輯或操作符也是短路操作。也就是說,如果第一個操作數的求值結果為true,就不會對第二個操作數求值了

乘性操作符

ECMAScript定義了3個乘性操作符:乘法、除法和求模。如果參與乘性計算的某個操作數不是數值,后臺會先使用Number()轉型函數將其轉換為數值,如:空字符串將被當作0,布爾值true將被當作1

1、乘法。操作符由一個星號(*)表示,用于計算兩個數值的乘積。在處理特殊值情況下,乘法操作符遵循下列特殊的規則:

  • 如果操作數都是數值,執行常規的乘法計算,即兩個正數或兩個負數相乘的結果還是正數,而如果只有一個操作數有符號那么結果就是負數。如果乘積超過了ECMAScript數值的表示范圍,則返回Infinity或-Infinity

  • 如果有一個操作數是NaN,則結果是NaN

  • 如果是Infinity與0相乘,則結果是NaN

  • 如果是Infinity與非0數值相乘,則結果是Infinity或-Infinity,取決于有符號操作數的符號

  • 如果是Infinity與Infinity相乘,則結果是Infinity

  • 如果有一個操作數不是數值,則在后臺調用Number()將其轉換為數值,然后在應用上面的規則

2、除法。操作符由一個斜線符號(/)表示,執行第二個操作數除第一個操作數的計算。遵循一下規則:

  • 如果操作數都是數值,執行常規的除法計算,即兩個正數或兩個負數相除結果還是正數;如果只有一個操作數有符號,那么結果就是負數。如果超過了ECMAScript數值的表示范圍,則返回Infinity或-Infinity

  • 如果有一個操作數是NaN,則結果是NaN

  • 如果是Infinity被Infinity除,則結果是NaN

  • 如果是0被0除,則結果是NaN

  • 如果是非零的有限數被零除,則結果是Infinity或-Infinity,取決于有符號操作數的符號

  • 如果是Infinity被任何非零數值除,則結果是Infinity或-Infinity,取決于有符號操作數的符號

  • 如果有一個操作數不是數值,則在后臺調用Number()將其轉換為數值,然后再應用上面的規則

3、求模(余數)。操作符由一個百分號(%)表示。遵循以下規則:

  • 如果操作數都是數值,執行常規的除法計算,返回除得的余數

  • 如果被除數是無窮大值而除數是有限大的數值,則結果是NaN

  • 如果被除數是有限大的數值而除數是零,則結果是NaN

  • 如果是Infinity被Infinity除,則結果是NaN

  • 如果被除數是有限大的數值而除數是無窮大的數值,則結果是被除數

  • 如果被除數是零,則結果是零

  • 如果有一個操作數不是數值,則在后臺調用Number()將其轉換為數值,然后在應用上面規則

加性操作符

與乘性操作符類似,加性操作符也會在后臺轉換不同的數據類型。

1、加法。加法操作符由加號(+)表示。如果兩個操作數都是數值,執行常規的加法計算,然后根據下列規則返回結果:

  • 如果有一個操作數是NaN,則結果是NaN

  • 如果是Infinity加Infinity,則結果是Infinity

  • 如果是-Infinity加-Infinity,則結果是-Infinity

  • 如果是Infinity加-Infinity,則結果是NaN

  • 如果是+0加+0,則結果是+0

  • 如果是-0加-0,則結果是-0

  • 如果是+0加-0,則結果是0

如果有一個操作數是字符串,那么就要應用如下規則:

  • 如果兩個操作數都是字符串,則將第二個操作數與第一個操作數拼接起來

  • 如果只有一個操作數是字符串,則將另一個操作數轉換為字符串,然后再將兩個字符串拼接起來

  • 如果有一個操作數是對象、數值或布爾值,則調用它們的toString()方法取得相應的字符串值,然后再應用前面關于字符串的規則

  • 如果是undefined和null,則分別調用String()函數并取得字符串"undefined"和"null"

2、減法。減法操作符由減號(-)表示,與加法操作符類似,遵循以下規則:

  • 如果兩個操作符都是數值,則執行常規的算術減法操作并返回結果

  • 如果有一個操作數是NaN,則結果是NaN

  • 如果是Infinity減Infinity,則結果是NaN

  • 如果是-Infinity減-Infinity,則結果是NaN

  • 如果是Infinity減-Infinity,則結果是Infinity

  • 如果是-Infinity將Infinity,則結果是-Infinity

  • 如果是+0減+0,則結果是+0

  • 如果是-0減+0,則結果是-0

  • 如果是-0減-0,則結果是+0

  • 如果有一個操作數是字符串、布爾值、null或undefined,則現在后臺調用Number()函數將其轉換為數值,然后再根據前面的規則執行減法計算。如果轉換結果是NaN,則減法的結果就是NaN

  • 如果有一個操作數是對象,則調用對象的valueOf()方法以取得表示該對象的數值。如果得到的值是NaN,則減法結果就是NaN。如果對象沒有valueOf()方法,則調用其toString()方法并將得到的字符串轉換為數值

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

關系操作符

關系操作符有小于(<)、大于(>)、小于等于(<=)和大于等于(>=)四個關系比較。當關系操作符的操作數使用了非數值時,也要進行數據轉換或完成某些奇怪的操作。相應規則如下:

  • 如果兩個操作數都是數值,則執行數值比較

  • 如果兩個操作數都是字符串,則比較兩個字符串對應的字符編碼值

  • 如果一個操作數是數值,則將另一個操作數轉換為一個數值,然后執行數值比較

  • 如果一個操作數是對象,則調用這個對象的valueOf()方法,用得到的結果按照前面的的規則進行比較。如果對象沒有valueOf()方法,則調用toString()方法,并用得到的結果根據前面的規則執行比較

  • 如果一個操作數是布爾值,則先將其轉換為數值,然后再執行比較

在比較字符串時,實際比較的是兩個字符串中對應位置的每個字符的字符編碼值。經過這么一番比較之后,再返回一個布爾值。大寫字母的字符編碼小于小寫字母的字符編碼。

相等操作符

兩組操作符:相等和不相等——先轉換再比較;全等和不全等——僅比較而不轉換

1、相等和不相等。相等操作符由兩個等于號(==)表示,如果兩個操作數相等,則返回true;不相等操作符由嘆號后跟等于號(!=)表示,如果兩個操作數不相等,則返回true。這兩個操作符都會先轉換操作數(通常稱為強制轉型),然后再比較它們的相等性。在轉換不同數據類型時,遵循以下基本規則:

  • 如果一個操作數是布爾值,則在比較相等性之前先將其轉換為數值——false轉換為0,true轉換為1

  • 如果一個操作數是字符串,另一個操作數是數值,在比較相等性之前先將字符串轉換為數值

  • 如果一個操作數是對象,另一個操作數不是,則調用對象的valueOf()方法,用得到的基本類型值按照前面的規則進行比較

這兩個操作符在進行比較時要遵循下列規則

  • null和undefined事相等的

  • 比較相等性之前,不能將null和undefined轉換成其他任何值

  • 如果有一個操作數是NaN,則相等操作符返回false,而不相等操作符返回true。即使兩個操作數都是NaN,則相等操作符也返回false;因為按照規則,NaN不等于NaN

  • 如果兩個操作數都是對象,則比較它們是不是同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回true;否則,返回false

2、全等和不全等。全等操作符由3個等于號(===)表示,它只在兩個操作數未經轉換就相等的情況下返回true。不全等操作符有一個嘆號后跟兩個等于號(!==)表示,它在兩個操作數未經轉換就不相等的情況下返回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

條件操作符

語法:var max = (num1 > num2) ? num1 : num2

以上例子中,max中將會保存一個最大的值,表達式的意思是:如果num1大于num2(關系表達式返回true),則將num1的值賦給max;如果num1小于或等于num2(關系表達式返回false),則將num2的值賦給max

賦值操作符

賦值操作符由等于號(=)表示,其作用就是把右側的值賦給左側的變量。如果在等號前面再添加乘性操作符、加性操作符或位操作符,就可以完成復合賦值操作。每個主要的算術操作符(以及個別的其他操作符)都有對應的復合賦值操作符。這些操作符如下所示:

  • 乘/賦值——*=

  • 除/賦值——/=

  • 模/賦值——%=

  • 加/賦值——+=

  • 減/賦值——-=

  • 左移/賦值——<<=

  • 有符號右移/賦值——>>=

  • 無符號右移/賦值——>>>=

逗號操作符

逗號操作符可以在一條語句中執行多個操作,如:var num1=1, num2=2, num3=3;

逗號操作符還可以用于賦值,在用于賦值時,逗號操作符總會返回表達式中的最后一項。如:var num= (5, 6, 1, 4, 7, 0); // num值為0

感謝各位的閱讀,以上就是“ECMAScript中都有哪些操作符”的內容了,經過本文的學習后,相信大家對ECMAScript中都有哪些操作符這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩平市| 明光市| 庄浪县| 白城市| 邹平县| 济南市| 大厂| 桂阳县| 黑河市| 高雄县| 利川市| 长武县| 登封市| 浪卡子县| 古丈县| 鄂尔多斯市| 樟树市| 合川市| 高雄市| 扎赉特旗| 来安县| 伊金霍洛旗| 邻水| 临湘市| 龙门县| 南城县| 昔阳县| 阿拉善左旗| 芮城县| 留坝县| 太康县| 丹阳市| 玉溪市| 吉安市| 五家渠市| 米易县| 卫辉市| 阿合奇县| 西林县| 民勤县| 泰顺县|