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
- javascript基礎(算數運算子)(八)JavaScript
- 算數運算子
- PHP基礎教程-10 算術運算子PHP
- Java 基礎-運算子Java
- == 運算子 - Java基礎Java
- 運算子的基礎
- Java基礎09:邏輯運算子、位運算子Java
- [java基礎]之 運算子Java
- stylus_基礎語法(引數/function/運算子)Function
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- golang基礎–常量與運算子Golang
- Java基礎——邏輯運算子Java
- 【重溫基礎】instanceof運算子
- javascript基礎(邏輯運算子)(九)JavaScript
- swift 基礎筆記二(運算子)Swift筆記
- Java基礎知識(變數、資料型別、運算子)Java變數資料型別
- 10.程式程式設計基礎4~變數&運算子程式設計變數
- Java基礎:Java變數、資料型別、運算子(2)Java變數資料型別
- 算術運算子裡的特殊運算子
- javascript基礎(賦值運算子,關係運算子,相等運算子,三元運算子,運算子的優先順序,程式碼塊)(十)JavaScript賦值
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 豬行天下之Python基礎——2.3 變數,常量,運算子Python變數
- JS基礎入門篇(七)—運算子JS
- PHP基礎教程-17 布林運算子PHP
- [shell基礎]——算術運算
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 逍遙自在學C語言 | 算數運算子C語言
- SCSS 算術運算子CSS
- Java算術運算子Java
- 計算機基礎:位運算計算機
- python基礎語法2---運算子Python
- Go 基礎教程--4-常量與運算子Go
- java基礎一:基本型別,運算子號Java型別
- Python的基礎學習(五):運算子Python
- JAVA基礎--資料型別和運算子Java資料型別
- 第二章 java基礎(加運算子)Java
- PHP基礎教程-16 字串連線運算子PHP字串