JS運算符2019-08-18(2)

算數運算符

JavaScript 共提供10個算術運算符
  • 加法運算符:x + y
  • 減法運算符:x - y
  • 乘法運算符: x * y
  • 除法運算符:x / y
  • 指數運算符:x ** y
  • 余數運算符:x % y
  • 自增運算符:++x 或者x++
  • 自減運算符:--x或者x--
  • 數值運算符:+x
  • 負數值運算符:-x
加法運算符

1、求兩個數值的和

1 + 1 // 2

2、非數值的相加

true + true // 2
//兩個布爾值相加,布爾值會自動轉化為數值然后再相加
1 + true // 2

3、兩個字符串相加

'a' + 'bc' // "abc"

這時加法運算符會變成連接運算符,返回一個新的字符串,將兩個原字符串連接在一起。

4、字符串和非字符串相加

1 + 'a' // "1a"
false + 'a' // "falsea"

這時非字符串會轉成字符串,再連接在一起。

  • 加法運算符是在運行時決定,到底是執行相加,還是執行連接。運算子的不同,導致了不同的語法行為,這種現象稱為“重載”(overload)

  • 由于從左到右的運算次序,字符串的位置不同會導致不同的結果。

'3' + 4 + 5 // "345"
3 + 4 + '5' // "75"

-減法、除法和乘法運算符,都是將字符串自動轉為數值,然后再運算。

5、對象的相加

  • 如果運算子是對象,必須先轉成原始類型的值,然后再相加。
var obj = { p: 1 };
obj + 2 // "[object Object]2"
//對象obj轉成原始類型的值是[object Object],再加2就得到了上面的結果。


余數運算符
  • 余數運算符(%)返回前一個運算子被后一個運算子除,所得的余數。
12 % 5 // 2
  • 需要注意的是,運算結果的正負號由第一個運算子的正負號決定。
-1 % 2 // -1
1 % -2 // 1
  • 自增和自減運算符有一個需要注意的地方,就是放在變量之后,會先返回變量操作前的值,再進行自增/自減操作;放在變量之前,會先進行自增/自減操作,再返回變量操作后的值。
var x = 1;
var y = 1;

x++ // 1
++y // 2


數值運算符,負數值運算符
  • 數值運算符(+),只需要一個操作數,可以將任何值轉為數值(與Number函數的作用相同)。
+true // 1
+[] // 0
+{} // NaN
  • 負數值運算符(-),得到的值正負相反,連用兩個負數值運算符,等同于數值運算符。
var x = 1;
-x // -1
-(-x) // 1
  • 數值運算符號和負數值運算符,都會返回一個新的值,而不會改變原始變量的值


指數運算符
  • 指數運算符(**)完成指數運算,前一個運算子是底數,后一個運算子是指數。
2 ** 4 // 16
  • 多個指數運算符連用時,先進行最右邊的計算。


比較運算符

JavaScript 一共提供了8個比較運算符。

  • >大于運算符
  • <小于運算符
  • <=小于或等于運算符
  • >= 大于或等于運算符
  • == 相等運算符
  • ===嚴格相等運算符
  • != 不相等運算符
  • !== 嚴格不相等運算符
  • 比較運算符可以比較各種類型的值,不僅僅是數值。
  • 八個比較運算符分成兩類:
    1、相等比較
    2、非相等比較:
    非相等比較算法是先看兩個運算子是否都是字符串,如果是的,就按照字典順序比較(實際上是比較 Unicode 碼點);否則,將兩個運算子都轉成數值,再比較數值的大小。


布爾運算符

  • 布爾運算符用于將表達式轉為布爾值,一共包含四個運算符:

1、取反運算符:!

  • 用于將布爾值變為相反值,即true變成falsefalse變成true
  • 對于非布爾值,取反運算符會將其轉為布爾值
  • 以下六個值取反后為true,其他值都為false:
    undefined
    null
    false
    0
    NaN
    空字符串('')
  • 不管什么類型的值,經過取反運算后,都變成了布爾值。

2、且運算符:&&

  • 且運算符(&&)往往用于多個表達式的求值
  • 運算規則是:如果第一個運算子的布爾值為true,則返回第二個運算子的(注意是值,不是布爾值);如果第一個運算子的布爾值為false,則直接返回第一個運算子的值,且不再對第二個運算子求值。
't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""
  • 且運算符可以多個連用,這時返回第一個布爾值為false的表達式的值。如果所有表達式的布爾值都為true,則返回最后一個表達式的值。
true && 'foo' && '' && 4 && 'foo' && true
// ''
//第一個為布爾值為false的表達式是第三個表達式,所以返回''
1 && 2 && 3
// 3
//所有表達式都為true,所以返回最后一個表達式 3

3、或運算符:||

  • 或運算符(||)用于多個表達式的求值
  • 運算規則是:如果第一個運算子的布爾值為true,則返回第一個運算子的值,且不再對第二個運算子求值;如果第一個運算子的布爾值為false,則返回第二個運算子的值。
't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""
  • 或運算符可以多個連用,這時返回第一個布爾值為true的表達式的值。如果所有表達式都為false,則返回最后一個表達式的值
false || 0 || '' || 4 || 'foo' || true
// 4

false || 0 || ''
// ''

4、三元運算符:?:

  • 三元條件運算符由問號(?)和冒號(:)組成,分隔三個表達式
  • 是 JavaScript 語言唯一一個需要三個運算子的運算符
  • 如果第一個表達式的布爾值為true,則返回第二個表達式的值,否則返回第三個表達式的值。
't' ? 'hello' : 'world' // "hello"
//t的布爾值為true,返回第二個表達式的值
0 ? 'hello' : 'world' // "world"
//0 的布爾值為false,返回第三個表達式的值
  • 三元條件表達式與if...else語句具有同樣表達效果。但if...else是語句,沒有返回值,而三元條件表達式是一個表達式,具有返回值

  • 在需要返回值的場合,只能使用三元條件表達式,而不能使用if..else。例如:

console.log(true ? 'T' : 'F');

上面代碼中,console.log方法的參數必須是一個表達式,這時就只能使用三元條件表達式。如果要用if...else語句,就必須改變整個代碼寫法了。


二進制位運算符
  • 二進制位運算符用于直接對二進制位進行計算,一共有7個
    1.png

    此圖來自
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 運算符是處理數據的基本方法,用來從現有的值得到新的值。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    徵羽kid閱讀 699評論 0 0
  • 算術運算符 JavaScript 共提供10個算術運算符,用來完成基本的算術運算。 加法運算符:x + y 減法運...
    guyigg閱讀 1,218評論 0 1
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,268評論 0 4
  • 標簽: 我的筆記 ---學習資料:http://javascript.ruanyifeng.com/ 1. 導論 ...
    暗夜的怒吼閱讀 836評論 0 1
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發現簡書還為我保存起的...
    Jenaral閱讀 2,830評論 2 9