
運算符(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); //11num++;練習:
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 && 表达式2console.log(123 && 456); //回傳456,除了0以外的所有數字都為真。
console.log(123 && 456 && 789); //回傳789,依序後推console.log(0 && 456); //0邏輯或:
表达式1 || 表达式2console.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
*/