05-JavaScript基礎-算數運算子
運算子基本概念
- 運算子是告訴程式執行特定算術或邏輯操作的符號。
- 例如告訴程式, 某兩個數相加, 相減等
運算子分類
-
按照功能劃分:
- 算術運算子
- 位運算子
- 關係運算子與邏輯運算子
-
運算子根據參與運算的運算元的個數分為
- 單目運算
- 單目運算:只有一個運算元 如 : 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
相關文章
- Java 基礎 之 算數運算子Java
- 算數運算子
- 運算子的基礎
- == 運算子 - Java基礎Java
- Java基礎09:邏輯運算子、位運算子Java
- [java基礎]之 運算子Java
- 【重溫基礎】instanceof運算子
- golang基礎–常量與運算子Golang
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- Java基礎知識(變數、資料型別、運算子)Java變數資料型別
- 豬行天下之Python基礎——2.3 變數,常量,運算子Python變數
- 算術運算子裡的特殊運算子
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- python基礎語法2---運算子Python
- Python的基礎學習(五):運算子Python
- JS基礎入門篇(七)—運算子JS
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 《前端運維》一、Linux基礎--05Shell運算子前端運維Linux
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- Java算術運算子Java
- SCSS 算術運算子CSS
- Go 基礎教程--4-常量與運算子Go
- JAVA基礎--資料型別和運算子Java資料型別
- java基礎一:基本型別,運算子號Java型別
- 【筆記】Python基礎(二)運算子介紹筆記Python
- 【學習】SQL基礎-008-集合運算子SQL
- 計算機基礎:位運算計算機
- Python基礎運算分享Python
- 3.2 Tensorflow基礎運算
- python-算數運算子對應的函式Python函式
- 逍遙自在學C語言 | 算數運算子C語言
- Java基礎語法:運算子、包機制、JavaDocJava
- C++基礎知識篇:C++ 運算子C++
- 【重溫基礎】5.表示式和運算子
- Python3基礎——運算子、資料型別Python資料型別
- 位運算子的計算
- 算術運算子++、--的使用
- 基礎拾遺:除了&和&&的區別,你還要知道位運算的這5個運算子
- 零基礎學習 Python 之數字與運算Python