JavaScript 運算子
運算子(operrator)也被稱為操作符,是用於實現賦值、比較和執行算術運算子等功能的符號。
JavaScript中常用的運算子由:
-
算術運算子
-
遞增和遞減運算子
-
比較運算子
-
邏輯運算子
-
賦值運算子
2.算術運算子
2.1算術運算子概述
概念:算術運算使用的符號,用於執行兩個變數或值的算數運算。
運算子 | 描述 | 例項 |
---|---|---|
+ | 加 | 10 + 20 = 30 |
- | 減 | 10 - 20 = -10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
% | 取餘數(取模) | 返回除法的餘數 9 % 2 = 1 |
2.2 浮點數的精度問題
浮點數值的最高精度是17位小數,但在進行算術計算時其精確度遠遠不如整數。
console.log(0.1 + 0.2);//結果不是0.3 而是0.30000000000000004
console.log(0.03 + 0.4);//結果不是0.43 而是 0.43000000000000005
所以:不要直接判斷兩個浮點數是否相等
2.3表示式和返回值
表示式:是由數字、運算子、變數等以能求得數值的有意義排列方法所的組合
簡單理解:是由數字、運算子、變數等組成的式子
表示式最終都會有一個結果,返回給我們,我們稱為返回值
3.遞增和遞減運算子
3.1遞增和遞減運算子概述
如果需要反覆給數字變數新增或減去1,可以使用遞增(++)和遞減(--)運算子來完成。
在JavaScript中,遞增(++)和遞減(--)既可以放在變數前面也可以放在變數後面。放在變數前面
注意:遞增和遞減運算子必須和變數配合使用。
3.2 遞增運算子
1.前置遞增運算子
++num前置遞增,就是自加1,類似於num = num + 1,但是++num寫起來更簡單。
使用口訣:先自加,後返回值
2.後置遞增運算子
num++後置遞增,就是自加1,類似於num = num + 1,但是num++寫起來更簡單。
使用口訣:先返回原值,後自加
3.3前置遞增和後置遞增小結
-
前置遞增和後置遞增運算子可以簡化程式碼的編寫,讓變數的值 + 1 比以前寫法更簡單
-
單獨使用時,執行結果相同
-
與其他程式碼連用時,執行結果會不同
-
後置:先原值運算,後自加(先人後己)
-
前置:先自加,後運算(先己後人)
-
開發時,大多使用後置遞增/減,並且程式碼獨佔一行,例如:num++;或者num--;
4.比較運算子
4.1比較運算子概述
概念:比較運算子(關係運算符)是兩個資料進行比較時所使用的運算子,比較運算後,會返回一個布林值(true/false)作為比較運算的結果。
運算子名稱 | 說明 | 案例 | 結果 |
---|---|---|---|
< | 小於號 | 1 < 2 | true |
> | 大於號 | 1 > 2 | false |
大於等於號(大於或者等於) | 2 >= 2 | true | |
<= | 小於等於號(小於或者等於) | 3 <= 2 | false |
== | 判斷號(會轉型) | 37 == 37 | true |
!= | 不等號 | 37 != 37 | false |
=== !== | 全等 要求值和資料型別都一致 | 37 === '37' | true |
4.2 小結
符號 | 作用 | 用法 |
---|---|---|
= | 賦值 | 把右邊給左邊 |
== | 判斷 | 判斷兩邊值是否相等(注意此時有隱式轉換) |
=== | 全等 | 判斷兩邊的值和資料型別是否完全相同 |
console.log(18 == '18');
console.log(18 === '18')
5.邏輯運算子
5.1 邏輯運算子概述
概念:邏輯運算子是用來進行布林值運算的運算子,其返回值也是布林值。後面開發中經常用於多個條件的判斷
邏輯運算子 | 說明 | 案例 |
---|---|---|
&& | “邏輯與”,簡稱“與” and | true && false |
|| | “邏輯或”,簡稱“或”or | true || false |
! | “邏輯 非”,簡稱“非” not | !true |
5.2 邏輯與&&
兩邊都是true才返回true,否則返回false
console.log(3 > 5 && 5 < 3);//false
console.log(3 < 5 && 3 < 4);//true
5.3 邏輯或 ||
兩邊都是false才返回false,否則返回true
console.log(2 > 1 || 4 < 6);//true
console.log(3 > 4 || 3 > 5);//false
5.4 邏輯非 !
邏輯非 (!)也叫作取反符,用來取一個布林值相反的值,如true的相反值是false
var isOk = !true;
console.log(isOk);//false
5.5 短路運算(邏輯中斷)
短路運算的原理:當有多個表示式(值)時,左邊的表示式值可以確定結果時,就不再繼續運算右邊的表示式的值;
1.邏輯與
-
語法 :表示式1 && 表示式2
-
如果第一個表示式的值為真,則返回表示式2
-
如果第一個表示式的值為假,則返回表示式1
console.log(123 && 345);//345
console.log(0 && 123);//0
console.log(0 && 123 + 234 && 456);//0
2.邏輯或
-
語法:表示式1 || 表示式2
-
如果第一個表示式的值為真,則返回表示式1
-
如果第一個表示式的值為假,則返回表示式2
console.log(123 || 456);//123
console.log(0 || 521);//521
console.log(125 || 454 + 564 || 123);//125
邏輯中斷很重要,會影響程式的執行結果
var num = 0;
console.log(123 || num++);//123
console.log(num);//0
6.賦值運算子
概念:用來把資料賦值給變數的運算子。
賦值運算子 | 說明 | 案例 |
---|---|---|
= | 直接賦值 | var usrName = '我是值'; |
+=、-= | 加、減一個數後再賦值 | var age = 10;age += 5;//15 |
*=、/=、%= | 乘、除、取模後再賦值 | var age = 2;age *= 5;//10 |
var age = 10;
age += 5;//相當於age = age + 5;
age -= 5;//相當於age = age - 5;
age *= 5;//相當於age = age * 5;
7.運算子優先順序
優先順序 | 運算子 | 順序 |
---|---|---|
1 | 小括號 | () |
2 | 一元運算子 | ++ -- ! |
3 | 算數運算子 | 先*/% 後+- |
4 | 關係運算符 | |
5 | 相等運算子 | == != === !== |
6 | 邏輯運算子 | 先 && 後|| |
7 | 賦值運算子 | = |
8 | 逗號運算子 | , |
-
一元運算子裡面的邏輯非優先順序很高
-