運算符(operator)也被稱為操作符,是用來實現賦值、比較和執行算數運算等函數的符號。
JavaScript中常用的運算子有:
概念:算術運算所使用的符號,用於執行兩個變數或值的算術運算。
運算子 | 描述 | 實例 |
---|---|---|
+ | 加 | 10+20=30 |
- | 減 | 20-10=10 |
* | 乘 | 10*20=200 |
/ | 除 | 10/20=0.5 |
% | 取餘數(取模) | 返回除法的餘數9%2=1 |
console. log(1 + 1); //2 console.log(1 - 1); //0 console.log(1 * 1); //1 console.log(1 / 1); //1 console.log(4 % 2); //0
浮點數在算數運算裡面會有誤差(避免直接參與運算):
console.log(0.1 + 0.2); //0.30000000000000004
無法直接判斷兩個浮點數是否相等。
var num = 0.1 + 0.2; console.log(num == 0.3); //false
表達式與傳回值:
由數字、運算符、變數等組成的式子我們稱為表達式。
表達式最終都會有一個結果回傳給我們,我們稱為回傳值。
如果需要重複給數字變數加法或減去1,可以使用遞增( ++
)和遞減( --
)運算子來完成。
繁瑣寫法:
var num = 1; num = num + 1; num = num + 1; console.log(num); //3
++
寫在變數的前面
++num
前置遞增就是自加1,類似num=num+1
var age = 10; ++age; console.log(age);//11 類似age = age + 1
使用口訣:先自加,後回傳值
console.log(age); var a = 10; console.log(++a + 10); //(10+1)+10=21
++
寫在變數的後面
num++
後置遞增,就是自加1,類似num=num+1
var age = 10; age++; console.log(age);//11 類似age = age + 1
使用口訣:先傳回原值,再自加
var a = 10; console.log(a++ + 10); //10+10=20 console.log(a); //11
num++;
練習:
var e = 10; var f = e++ + ++e; //1.e++=10 e=11 2.++e=12 f=10+12 console.log(f); //22
子概念:比較運算子(關係運算子)是兩個資料進行比較時所使用的運算符,比較運算後,會傳回一個布林值(true/false)作為比較運算的結果。
運算子名稱 | 說明 | 案例 | 結果 |
---|---|---|---|
< | 小於號 | 1>2 | true |
> | 大於號 | 1>2 | false |
>= | 大於等於號(大於或等於) | 2>=2 | true |
<= | 小於等於號(小於或等於) | 3<=2 | false |
== | 判等號(會轉型) | 17==17 | true |
!= | 不等號 | 17!=17 | false |
=== !== | 全等,要求值和資料型態都一致 | 17==='17' | false |
console.log( 2 <= 5); //true console.log('岳澤以' = '個人部落格'); //false console.log(17 == '17'); //true 預設轉換資料型,字串型轉換為數字型console.log(17 = '17'); //false 資料型別不同,要求值與資料類型一致
符號 | 作用 | 用法 |
---|---|---|
= | 賦值 | 把右邊給左邊 |
== | 判斷 | 判斷兩邊值是否相等(存在隱式轉換) |
=== | 全等 | 判斷兩邊的值和資料型態是否完全相同 |
概念:邏輯運算子是用來進行布林值運算的運算符,其傳回值也是布林值。後面開發中常用於多個條件的判斷。
邏輯運算子 | 說明 | 案例 |
---|---|---|
&& | "邏輯與",簡稱「與」and | ture && false |
丨丨 | "邏輯或",簡稱「或」or | ture丨丨 false |
! | "邏輯非",簡稱「非」not | ! true |
符號: &&
相對於and
兩側都為true
結果才是true
,只要有一邊為false
,結果就為false
console.log(3 > 5 && 3 > 2); //false console.log(3 < 5 && 3 < 7); //true
符號: ||
相當於or
倆側都為false
,結果才是false
,只要有一側為true
,結果就是true
console.log(3 > 5 && 3 > 2); //false console.log(3 < 5 && 3 < 7); //true
符號: !
相對於not
邏輯非也叫作取反符,用來取一個布林值相反的值。
console.log(!true); //false console.log(!false); //true
短路運算的原理:當有多個表達式(值)時,左邊的表達式值可以確定結果時,就不再繼續運算右邊的表達式的值。
邏輯與:
表达式1 && 表达式2
console.log(123 && 456); //回傳456,除了0以外的所有數字都為真。 console.log(123 && 456 && 789); //回傳789,依序後推console.log(0 && 456); //0
邏輯或:
表达式1 || 表达式2
console.log(123 || 456); //123 console.log(123 || 456 || 123 + 456); //123 console.log(0 || 456 || 123 + 456); //456
注意:邏輯中斷會造成短路操作,即不執行後面的程式碼,影響程式設計師的運作結果。
var num = 0; console.log(123 || num++); //邏輯中斷造成num++未執行console.log(num); //0
概念:用來把資料賦值給變數的運算子
賦值運算子 | 說明 | 案例 |
---|---|---|
= | 直接賦值 | var name='岳澤以'; |
+=、-= | 加、減數後再賦值 | var age=10; age+=5; //15 |
*=、/=、%= | 乘、除、取餘後再賦值 | var age=10; age*=5; //10 |
var num = 5; num += 10; console.log(num); //5+10=15 num *= 3; console.log(num); //15*3=45運算子優先權優先權
運算 | 子 | 順序 |
---|---|---|
1 | 小括號 | () |
2 | 一元運算子 | ++ -- ! |
3 | 算術運算子 | 先* / 後+ - |
4 | 關係 |
符 | > >= < <= | |
5 | 相等運算子 | == != === !== |
6 | 邏輯運算子 | 先&& 後丨丨 |
7 | 賦值運算子 | = |
8 | 逗號運算子 | , |
console.log(4 >= 6 || '我' != '你' && !(12 * 2 == 144) && true); //true /* 邏輯運算子分四段1.4 >= 6 得false 2.'我' != '你'得true 3.!(12 * 2 == 144)得ture 4.true 然後判斷邏輯與:2與3得true 3和4得true 再判斷邏輯或得:true */