[TOC]
# JavaScript運算符
## **一、算術運算符**
  運算符又叫操作符( operator ),編程中常見的運算符包括 算術運算符,一元運算符,邏輯運算符,關系運算符,賦值運算符等。
<br>
### **算術運算符(數學運算符)**
  常用的算術運算符有 + - \* / %(取余)
```
var x = 5;
var y = 6;
console.log(x + y); //11
console.log(x - y); //-1
console.log(x * y); //30
console.log(x / y); //0.8333333333
console.log(x / 0);//Infinity:無窮大
console.log(x % 0);//NaN
```
<br>
### **表達式和語句**
#### **表達式**
  表達式是**由操作數和操作符(運算符)組合而成的代碼片段**, 要學習運算符就必須要知道表達式是什么以及表達式的作用,以下是介紹表達式的組成和特點.
>[info]1、組成:表達式是由操作符和操作數組成。
> 如:5+6,num1+num2,!true
> 輸出表達式的結果:console.log(num1+num);
>
> 2、特點
> 結果:一個表達式可以產生一個結果;
> 如 !true -> false, 8-3 -> 5,6==11 -> false
> 位置:表達式可以放在任何需要值的地方;
#### **語句**
  語句是構成程序的元素,可以看作程序的一個行為,也可以認為是計算機執行某種操作的指令。循環語句和判斷語句就是典型的語句。程序中一般使用分號 ";" 分割語句,一個程序可能有多個語句組成。
如:var num = 5;
*****
<br>
## **二、一元運算符**
  只有一個操作數的運算符叫一元運算符,如 ++8 中的 ++ 運算符。!true中的 ! 常用的一元運算符有 ++、-- 和 !,由于 ! 是做邏輯運算的,我們又把它歸類為邏輯運算符。下面我們先來學習 ++ 和 -- ,++ 又分為 前置++ 和 后置++,-- 又分為 前置-- 和 后置--。我們這節課只學習前置++和后置++,大家可以通過舉一反三的思想來學習前置--和后置-- 。
  在做一元運算符操作的時候,表達式的作用體現得非常重要。在 ++ 和 -- 運算中,不管是前置還是后置,表達式的執行過程都只有兩個步驟,分別是 **執行運算** 和 **返回表達式的結果**。具體操作如下。
<br>
### **前置++**
  表達式的執行過程如下
 步驟一:執行操作數的++運算(自身加 1);
 步驟二:操作數作為表達式的結果返回;
```
var num1 = 8;
++num1;//自身加1
console.log(num1);//輸出結果
var num2 = 6;
console.log(++num2);
console.log(num1 + ++num2);
```
<br>
### **后置++**
  表達式的執行過程如下
 步驟一:操作數作為表達式的結果返回;
 步驟二:執行操作數的++運算(自身加 1);
```
var num1 = 5;
num1++;//自身加1
console.log(num1);//輸出結果
var num2 = 6;
console.log(num1 + num2++);
```
<br>
## **三、邏輯運算符(布爾運算符)**
  邏輯運算符(布爾運算符)是針對布爾類型的值進行運算的,JS中的邏輯運算符有以下三種。
  邏輯與(**&&** ),若兩個操作數同時為true,則表達式的運算結果為true,否則運算結果為false;
  邏輯或(**||**),若兩個操作數中有一個為true,則表達式的運算結果為true,否則運算為false;邏輯非(**!**),取反;
  注意:邏輯運算符的表達式返回的結果總是 **布爾類型**,即**true** 或 **false**。
```
var bool01 = true;
var bool02 = true;
var bool03 = false;
console.log(bool01 && bool03); //輸出結果:true
console.log(bool01 || bool03); //輸出結果:true
console.log(!bool03); //輸出結果:false
```
<br>
## **四、關系運算符(比較運算符)**
  關系運算符 是用于比較兩個操作數的大小或相等的,關系運算符的表達式返回的結果是布爾類型,即 true 或 false。
  小于:<
  大于: >
  大于等于: >=
  小于等于: <=
  等于: ==
  不等于: !=
  全等于: ===
  全不等于: !==
```
var salary01 = 8000;
var salary02 = 10000;
var salary03 = '10000';
console.log(salary01 > salary02);//false
console.log(salary01 < salary02);//true
console.log(salary01 >= salary02);//false
console.log(salary01 <= salary02);//true
console.log(salary01 == salary02);//false
console.log(salary01 != salary02);//true
console.log(salary01 === salary02);//false
console.log(salary01 !== salary02);//true
// ==與===的區別
// ==只進行值的比較,值相同則返回true,===會進行類型和值的比較,兩者都相同,則返回true,否則返回false
console.log(salary02 == salary03);//true
console.log(salary02 === salary03);//false
```
<br>
## **五、賦值運算符**
  賦值運算符的作用是將運算符右邊的表達式的結果值賦給運算符左邊的變量,如 var y=x+3; 開發中常用賦值運算符如下:
  賦值: =
  加賦值: +=
  減賦值: -=
  乘賦值: \*=
  除賦值: /=
  求余賦值: %=
```
// =(賦值)
var num = 10;
console.log(num);
//+=(加賦值)
num += 5; // 等效于 num = num + 5;
console.log(num);
// -=(減賦值)
num -= 5;//等效于num = num - 5;
console.log(num);
// *=(乘賦值)
num *= 5;//等效于num = num * 5;
console.log(num);
// /= (除賦值)
num /= 5;//等效于num = num / 5;
console.log(num);
// %=(求余賦值)
num %= 5; // 等效于 num = num % 5;
console.log(num);
```
<br>
<br>
## **運算符的優先級**
  以下運算符優先級排序中,! 既是一元運算符,又是邏輯運算符,由于一元運算符比邏輯運算符的優先級高,所以我們把 ! 歸類到一元運算符中。關系運算符中的 “比較大小” 和 “比較相等” 的優先級也不一樣,我們也將它分為關系運算符和相等運算符來處理。
  運算符優先級可以改變表達式的運算順序。
>[info]優先級從高到底
1. () 優先級最高
2. 一元運算符 ++ -- !
3. 算術運算符 先* / % 后 + -
4. 關系運算符(比較大小) > >= < <=
5. 相等運算符(比較相等) == != === !==
6. 邏輯運算符 先&& 后||
7. 賦值運算符 = += -= *= /= %=