運算符基本概念
和數學中的運算符一樣, JavaScript中的運算符是告訴程序執行特定算術或邏輯操作的符號
-
例如告訴程序, 某兩個數相加, 相減,相乘等
- 什么是表達式
- 表達式就是利用運算符鏈接在一起的有意義,有結果的語句;
- 例如: a + b; 就是一個算數表達式, 它的意義是將兩個數相加, 兩個數相加的結果就是表達式的結果
- 注意: 表達式一定要有結果
運算符分類
-
按照功能劃分:
- 算術運算符
- 位運算符
- 關系運算符
- 邏輯運算符
-
運算符根據參與運算的操作數的個數分為
- 單目運算
- 單目運算:只有一個操作數 如 : i++ !
- 雙目運算
- 雙目運算:有兩個操作數 如 : a+b;
- 三目運算
- 三目運算也稱為問號表達式 a>b ? 1 : 0;
- 單目運算
運算符的優先級和結合性
- 早在小學的數學課本中,我們就學習過"從左往右,先乘除后加減,有括號的先算括號里面的", 這句話就蘊含了優先級和結合性的問題
- 優先級
- JavaScript中,運算符的運算優先級共分為15 級。1 級最高,15 級最低。
- 在表達式中,優先級較高的先于優先級較低的進行運算。
- 在一個運算量兩側的運算符優先級相同時,則按運算符的結合性所規定的結合方向處理
運算符 | 描述 |
---|---|
() | 表達式分組 |
++ -- - ~ ! | 一元運算符 |
* / % | 乘法、除法、取模 |
+ - + | 加法、減法、字符串連接 |
<< >> >>> | 移位 |
< <= > >= | 小于、小于等于、大于、大于等于 |
== != === !== | 等于、不等于、嚴格相等、非嚴格相等 |
& | 按位與 |
^ | 按位異或 |
| | 按位或 |
&& | 邏輯與 |
|| | 邏輯或 |
?: | 條件 |
= += -= *= /= %= | 賦值運算 |
, | 多重求值 |
- 江哥提示:一般情況下不需要死記硬背優先級, 只需要記住()優先級最高即可
-
結合性
- JavaScript中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。
-
算術運算符的結合性是自左至右
,即先左后右
例如表達式: x - y + z; 則y 應先與“-”號結合,執行 x-y 運算,然后再執行+z 的運算。 這種自左至右的結合 方向就稱為“左結合性”。
- 而自右至左的結合方向稱為“右結合性”。
最典型的右結合 性運算符是賦值運算符 例如:如x = y = z = 10; 由于“=”的 右結合性,應先執行z = 10; 再執行y = z 再執行x = y運算。
-
- JavaScript中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。
-
優先級
- 先計算優先級高的
var res = 2 + 3 * 8; 先算3 * 8, 再加上 2
- 優先級相同則左結合計算
3*5/3*2 先算3*5,然后再算除3,最后再乘以2
- 先計算優先級高的
算術運算符
名稱 | 符號 | 說明 |
---|---|---|
加法運算符 | + | 對兩個值進行加法運算,并將結果返回 |
減法運算符 | - | 對兩個值進行減法運算,并將結果返回 |
乘法運算符 | * | 對兩個值進行乘法運算,并將結果返回 |
除法運算符 | / | 對兩個值進行除法運算,并將結果返回 |
求余運算符 (模運算符) | % | 對兩個值進行取余運算,并將結果返回 |
-
加法運算
- 格式: Number1 + Number2;
var res = 1 + 1; console.log(res); // 2 var num1 = 10; var num2 = 20; var res2 = num1 + num2; console.log(res2); // 30
- 非Number類型的值進行運算時,會將這些值轉換為Number然后在運算
var result = true + 1; console.log(result); // 2 result = true + false; console.log(result); // 1 result = 2 + null; console.log(result);// 2
- 任何值和NaN做運算都得NaN
var result = 2 + NaN; console.log(result); //NaN
- 任何的值和字符串做加法運算,都會先轉換為字符串,然后再和字符串做拼串的操作
var result = 1 + "123"; console.log(result); // 1123 result = 2 + "true"; console.log(result); // 2true
- 格式: Number1 + Number2;
-
減法運算
- 格式: Number1 - Number2;
var res = 1 - 1; console.log(res); // 0 var num1 = 10; var num2 = 20; var res2 = num1 - num2; console.log(res2); // -10
- 非Number類型的值進行運算時,會將這些值轉換為Number然后在運算
var result = true - 1; console.log(result); // 0 result = true - false; console.log(result); // 1 result = 2 - null; console.log(result);// 2
- 任何值和NaN做運算都得NaN
var result = 2 - NaN; console.log(result); //NaN
- 字符串做減法也會轉換為Number
var result = 2 - "1"; console.log(result); // 1 result = "2" - "1"; console.log(result); // 1
- 格式: Number1 - Number2;
-
乘法運算
- 格式: Number1 * Number2;
var res = 2 * 2; console.log(res); // 4 var num1 = 10; var num2 = 20; var res2 = num1 * num2; console.log(res2); // 200
- 其它規律和減法一樣
- 非Number類型的值進行運算時,會將這些值轉換為Number然后在運算
- 任何值和NaN做運算都得NaN
- 字符串做乘法也會轉換為Number
- 其它規律和減法一樣
- 格式: Number1 * Number2;
-
除法運算
- 格式: Number1 / Number2;
var res = 2 / 2; console.log(res); // 1 var num1 = 10; var num2 = 20; var res2 = num1 / num2; console.log(res2); // 0.5
- 其它規律和減法一樣
- 非Number類型的值進行運算時,會將這些值轉換為Number然后在運算
- 任何值和NaN做運算都得NaN
- 字符串做除法也會轉換為Number
- 其它規律和減法一樣
- 格式: Number1 / Number2;
-
取余運算
- 格式: Number1 % Number2;
- m%n 求余,相當于m/n 獲取余數
var res = 10 % 3; console.log(res); // 1 var num1 = 10; var num2 = 2.5; var res2 = num1 % num2; console.log(res2); // 0
- 規律
- n等于0 返回NaN
- m等于0 結果為0
- m>n 正常求余 如:8%3 = 2
- m<n 結果是m 如:2%4 = 2
var result = 10 % 0; console.log(result); // NaN result = 0 % 10; console.log(result); // 0 result = 2 % 10; console.log(result); // 2
- 其它規律和減法一樣
- 非Number類型的值進行運算時,會將這些值轉換為Number然后在運算
- 任何值和NaN做運算都得NaN
- 字符串做取余也會轉換為Number
- 規律
- Tips
- 可以通過為一個值 -0 *1 /1來將其轉換為Number
console.log(result); // 123
result = true * 1;
console.log(result); // 1
result = null / 1;
console.log(result); // 0
正負運算符
- 正號
- + 正號不會對數字產生任何影響
var num = 123; num = +num; console.log(num); // 123
- 對于非Number類型的值,會將先轉換為Number,然后再運算
var bool = true; var res = +bool; console.log(res); // 1 var str = "123"; res = +str; console.log(res); // 123 var str2 = "123abc"; res = +str2; console.log(res); // NaN, 所以內部不是調用parseInt, 而是Number()函數 var temp = null; res = +temp; console.log(res); // 0
- 負號
- - 負號可以對數字進行負號的取反
var num = 123; num = -num; console.log(num); // -123
- - 負號可以對數字進行負號的取反
學習交流方式:
1.微信公眾賬號搜索: 李南江(配套視頻,代碼,資料各種福利獲取)
2.加入前端學習交流群:
302942894 / 289964053 / 11550038