日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS基本概念(3)

發布時間:2023/11/30 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS基本概念(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【5】操作符

(1)一元操作符:只能操作一個值的操作符

  • 遞增、遞減操作符

    ++a ? ?--a ? ?前置
    a++ ? ?a-- ? ?后置
(這四個操作符對任何值都適用,不能轉換成數字的轉換為NaN)

  • 一元加、一元減操作符(表示正、負)

(2)位操作符:按內存中表示數值的位來操作數值

  • ECMAScript中所有數值都以IEEE-754 64位格式存儲,但位操作符并不直接操作64位的值,而是先將64位轉化為32位的整數,然后執行操作,最后再將結果轉化為64位。
  • 對于有符號的整數,32位中的前31位用于表示整數的值。第32位用于表示數值的符號(符號位):0表示正數,1表示負數。
  • 符號位的值決定了其他位數值的格式:

    正數:以純二進制存儲
    負數:二進制補碼
      步驟:1》求這個數值絕對值的二進制碼;
         2》求二進制的反碼,即將0替換為1,將1替換為0;
         3》得到的二進制反碼加1。

//-18求補碼 //18的二進制碼 0000 0000 0000 0000 0000 0000 0001 0010 //求反碼 1111 1111 1111 1111 1111 1111 1110 1101 //反碼加1 1 //———————————————————————————————————————————————————————————————————————————— //得 1111 1111 1111 1111 1111 1111 1110 1110
  • 在對特殊的NaN和Infinity值應用位操作時,這兩個值都會被當成0來處理。
  • 對非數值應用位操作符,會先使用Number()函數進行轉換。

  1》按位非(~):執行按位非的結果就是返回數值的反碼
  2》按位與(&):按位與操作只在兩數值的對應位都是1才返回1,任何一位是0,結果都是0
  3》按位或(|):按位或操作只在兩數值的對應位都是0才返回0,任何一位是1,結果都是1
  4》按位異或(^):按位異或操作在兩數值的對應位都是1或0返回0,只有一位是1,才返回1
  5》左移(<<)::左移操作符會將數值的所有位向左移動指定的位數,向左移位后,原數值的右側多出來的空位會以0來填充;左移不會影響操作數的符號位
  6》有符號的右移(>>):會將數值向右移動,但保留符號位,向右移位后,原數值的左側多出來的空位會以符號位的值來填充   7》無符號的右移(>>>):對正數,有符號右移和無符號右移結果相同,對于負數,無符號右移以0來填充空位,并且會把負數的二進制碼當成正數的二進制碼

(3)布爾操作符

1》邏輯非(!)

  • !對象 //false
  • !空字符串 //true
  • !非空字符串 //false
  • !數值0 //true
  • !任意非0數值(包括Infinity) //false
  • !null //true
  • !NaN //true
  • !undefined //true

使用兩個邏輯非操作符模擬Boolean()轉型函數的行為。
2》邏輯與(&&)
邏輯與操作可以應用于任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯與操作就不一定返回布爾值:

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

邏輯與操作是短路操作,即如果第一個操作數能夠決定結果,那么就不會再對第二個操作數求值(第一個操作數是false)。
3》邏輯或(||)
邏輯或操作可以應用于任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯或操作就不一定返回布爾值:

  • 如果第一個操作數是對象,則返回第一個操作數;
  • 如果第一個操作數的求值結果為false,則返回第二個對象;
  • 如果兩個操作數都是對象,則返回第一個操作數;
  • 如果兩個操作數都是null,則返回null;
  • 如果兩個操作數都是NaN,則返回NaN;
  • 如果兩個操作數都是undefined,則返回undefined;

邏輯或操作也是短路操作,即如果第一個操作數能夠決定結果,那么就不會再對第二個操作數求值(第一個操作數是true)。

(4)乘性操作符

1》乘法(*)

  • 如果操作數都是數值,執行常規的乘法計算,即兩個正數或兩個負數相乘的結果還是正數,而如果只有一個操作數有符號,那么結果就是負數。如果乘積超出了ECMAScript數值的表示范圍,則返回Infinity或-Infinity;
  • 如果有一個操作數是NaN,則結果是NaN;
  • 如果是Infinity與0相乘,則結果是NaN;
  • 如果是Infinity與非0數值相乘,則結果是Infinity或-Infinity,取決于有符號操作數的符號;
  • 如果是Infinity與Infinity相乘,則結果是Infinity;
  • 如果有一個數不是數值,則在后臺調用Number()將其轉換為數值,然后再應用上面的規則。

2》除法(/)

  • 如果操作數都是數值,執行常規的除法計算,即兩個正數或兩個負數相除的結果還是正數,而如果只有一個操作數有符號,那么結果就是負數。如果商超出了ECMAScript數值的表示范圍,則返回Infinity或-Infinity;
  • 如果有一個操作數是NaN,則結果是NaN;
  • 如果是0被0除,則結果是NaN;
  • 如果是非0的有限數被0除,則結果是Infinity或-Infinity,取決于有符號操作數的符號;
  • 如果是Infinity被Infinity除,則結果是NaN;
  • 如果是Infinity被任何非0數值除,則結果是Infinity或-Infinity,取決于有符號操作數的符號;
  • 如果有一個數不是數值,則在后臺調用Number()將其轉換為數值,然后再應用上面的規則。

3》求模、余數(%)

  • 如果操作數都是數值,執行常規的除法計算,返回除得的余數;
  • 如果被除數是無窮大值而除數是有限大的數值,則結果是NaN;
  • 如果被除數是有限大的數值而除數是0,則結果是NaN;
  • 如果是Infinity被Infinity除,則結果是NaN;
  • 如果被除數是有限大的數值而除數是無窮大的數值,則結果是被除數;
  • 如果被除數是0,則結果是0;
  • 如果有一個數不是數值,則在后臺調用Number()將其轉換為數值,然后再應用上面的規則。

(5)加性操作符

1》加法(+)

  • 如果兩個操作符都是數值,執行常規的加法計算,然后根據下列規則返回結果:
  • 如果有一個操作數是NaN,則結果是NaN;
  • 如果是Infinity加Infinity,則結果是Infinity;
  • 如果是-Infinity加-Infinity,則結果是-Infinity;
  • 如果是Infinity加-Infinity,則結果是NaN;
  • 如果是+0加+0,則結果是+0;
  • 如果是-0加-0,則結果是-0;
  • 如果是+0加-0,則結果是+0。
  • 如果有一個操作符是字符串,那么應用如下規則:
  • 如果兩個操作數都是字符串,則將第二個操作數與第一個操作數拼接起來;
  • 如果只有一個操作數是字符串,則將另一個操作數轉換為字符串,然后再將兩個字符串拼接起來。
  • 如果有一個操作數是對象、數值或布爾值,則調用它們的toString()方法取得相應的字符串值,然后再應用字符串的規則。對于null和undefined,則分別調用String()函數并取得字符串"null"和"undefined"。

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()方法并將得到的字符串轉化為數值。

(6)關系操作符

小于(<)、大于(>)、小于等于(<=)、大于等于(>=) 這幾個操作符都返回一個布爾值

  • 如果兩個操作數都是數值,則執行數值比較。
  • 如果兩個操作數都是字符串,則比較兩個字符串對應的字符編碼值。
  • 如果一個操作數是數值,則將另一個操作數轉化為一個數值,然后執行數值比較。
  • 如果一個操作數是對象,則調用這個對象的valueOf()方法,并用得到的結果根據前面的規則執行比較。如果對象沒有valueOf()方法,則調用toString()方法,并用得到的結果根據前面的規則執行比較。
  • 如果一個操作數是布爾值,則先將其轉換為數值,然后再執行比較。
  • 任何操作數與NaN進行關系比較,結果都是false。

(7)相等操作符

1》相等和不相等(==和!=)——先轉換再比較
先轉換操作數再比較相等性,在轉換不同的數據類型時,相等和不相等遵循以下規則:

  • 如果有一個操作數是布爾值,則在比較相等性前先將其轉換為數值---false轉換為0,true轉換為1;
  • 如果一個操作數是字符串,另一個操作數是數值,則在比較相等性前將字符串轉換為數值;
  • 如果一個操作數是對象,另一個不是,則調用對象的valueOf()方法,用得到的基本類型值按照前面的規則比較;
  • null和undefined是相等的;
  • 在比較相等性之前,不能將null和undefined轉換為其他任何值;
  • 如果有一個操作符是NaN,則相等操作符返回false,不相等操作符返回true;即使兩個操作數都是NaN,也一樣,因為按照規則,NaN不等于NaN;
  • 如果兩個操作數都是對象,則比較它們是不是同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回true;否則,返回false;
表達式
null == undefinedtrue
"NaN" == NaNfalse
5 == NaNfalse
NaN == NaNfalse
NaN != NaNtrue
5 =="5"true
false == 0true
true == 1true
true == 2flase
undefined == 0false
null == 0false

?

?

?

?

?

?

?

?

?

?

?

2》全等和不全等()——僅比較而不轉換
兩個操作數在未經轉換的情況下相等返回true,不相等返回false;

undefined == null;//true undefined === null;// false

(8)條件操作符

variable = boolean_expression ? true_value : false_value ;

(9)賦值操作符

簡單賦值(=)將右側的值賦給左側的變量
乘/賦值(*=)
除/賦值(/=)
模/賦值(%=)
加/賦值(+=)
減/賦值(-=)
左移/賦值(<<=)
有符號右移/賦值(>>=)
無符號右移/賦值(>>>=)

(10)逗號操作符

逗號操作符多用于聲明多個變量;

var num1 = 0 , num2 = 1 , num3 = 2 ;

除此之外,逗號操作符還可用于賦值,逗號操作符總會返回表達式中最后一項。

var num = {1,2,3,4,5}; //num值為5

?

轉載于:https://www.cnblogs.com/LS-tuotuo/p/5878189.html

總結

以上是生活随笔為你收集整理的JS基本概念(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。