1 - 運算符(操作符)
1.1 運算符的分類
運算符(operator)也被稱為操作符,是用于實作指派、比較和執行算數運算等功能的符号。
JavaScript中常用的運算符有:
- 算數運算符
- 遞增和遞減運算符
- 比較運算符
- 邏輯運算符
- 指派運算符
1.2 算數運算符
-
算術運算符概述
概念:算術運算使用的符号,用于執行兩個變量或值的算術運算。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-6YhcqWN3-1580991278482)(images\圖檔1.png)]
-
浮點數的精度問題
浮點數值的最高精度是 17 位小數,但在進行算術計算時其精确度遠遠不如整數。
是以:不要直接判斷兩個浮點數是否相等 !var result = 0.1 + 0.2; // 結果不是 0.3,而是:0.30000000000000004 console.log(0.07 * 100); // 結果不是 7, 而是:7.000000000000001
-
表達式和傳回值
表達式:是由數字、運算符、變量等以能求得數值的有意義排列方法所得的組合
簡單了解:是由數字、運算符、變量等組成的式子
表達式最終都會有一個結果,傳回給開發者,稱為傳回值
1.3 遞增和遞減運算符
-
遞增和遞減運算符概述
如果需要反複給數字變量添加或減去1,可以使用遞增(++)和遞減( – )運算符來完成。
在 JavaScript 中,遞增(++)和遞減( – )既可以放在變量前面,也可以放在變量後面。放在變量前面時,我們可以稱為前置遞增(遞減)運算符,放在變量後面時,我們可以稱為後置遞增(遞減)運算符。
注意:遞增和遞減運算符必須和變量配合使用。
- 遞增運算符
-
前置遞增運算符
++num 前置遞增,就是自加1,類似于 num = num + 1,但是 ++num 寫起來更簡單。
使用口訣:先自加,後傳回值
var num = 10; alert(++num + 10); // 21
-
後置遞增運算符
num++ 後置遞增,就是自加1,類似于 num = num + 1 ,但是 num++ 寫起來更簡單。
使用口訣:先傳回原值,後自加
var num = 10; alert(10 + num++); // 20
-
1.4 比較運算符
-
比較運算符概述
概念:比較運算符(關系運算符)是兩個資料進行比較時所使用的運算符,比較運算後,會傳回一個布爾值(true / false)作為比較運算的結果。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-KY3ZE2Pp-1580991278484)(images\圖檔2.png)]
-
等号比較
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-3ZP8KVvC-1580991278485)(images\圖檔3.png)]
console.log(18 == '18'); console.log(18 === '18');
1.5 邏輯運算符
-
邏輯運算符概述
概念:邏輯運算符是用來進行布爾值運算的運算符,其傳回值也是布爾值。後面開發中經常用于多個條件的判斷
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-tcLSmjEG-1580991278488)(images\圖檔4.png)]
-
邏輯與&&
兩邊都是 true才傳回 true,否則傳回 false
JavaScript基礎-運算符 JavaScript基礎-運算符 -
邏輯或 ||
兩邊都是 true才傳回 true,否則傳回 false
JavaScript基礎-運算符 JavaScript基礎-運算符 -
邏輯非 !
邏輯非(!)也叫作取反符,用來取一個布爾值相反的值,如 true 的相反值是 false
var isOk = !true; console.log(isOk); // false
-
短路運算(邏輯中斷)
短路運算的原理:當有多個表達式(值)時,左邊的表達式值可以确定結果時,就不再繼續運算右邊的表達式的值;
-
邏輯與
文法: 表達式1 && 表達式2
- 如果第一個表達式的值為真,則傳回表達式2 - 如果第一個表達式的值為假,則傳回表達式1
console.log( 123 && 456 ); // 456 console.log( 0 && 456 ); // 0 console.log( 123 && 456&& 789 ); // 789
-
邏輯或
文法: 表達式1 || 表達式2
- 如果第一個表達式的值為真,則傳回表達式1 - 如果第一個表達式的值為假,則傳回表達式2
console.log( 123 || 456 ); // 123 console.log( 0 || 456 ); // 456 console.log( 123 || 456 || 789 ); // 123
-
1.6 指派運算符
概念:用來把資料指派給變量的運算符。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-8xAlyyQV-1580991278490)(images\圖檔9.png)]
var age = 10;
age += 5; // 相當于 age = age + 5;
age -= 5; // 相當于 age = age - 5;
age *= 10; // 相當于 age = age * 10;
1.7 運算符優先級
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-gUMq4MU7-1580991278491)(images\圖檔10.png)]
- 一進制運算符裡面的邏輯非優先級很高
- 邏輯與比邏輯或優先級高
2 - 流程控制
2.1 流程控制概念
在一個程式執行的過程中,各條代碼的執行順序對程式的結果是有直接影響的。很多時候我們要通過控制代碼的執行順序來實作我們要完成的功能。
簡單了解:**流程控制就是來控制代碼按照一定結構順序來執行**
流程控制主要有三種結構,分别是**順序結構**、**分支結構**和**循環結構**,代表三種代碼執行的順序。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-unytG6Rh-1580991278493)(images\圖檔11.png)]
2.2 順序流程控制
順序結構是程式中最簡單、最基本的流程控制,它沒有特定的文法結構,程式會按照代碼的先後順序,依次執行,程式中大多數的代碼都是這樣執行的。
2.3 分支流程控制
-
分支結構
由上到下執行代碼的過程中,根據不同的條件,執行不同的路徑代碼(執行代碼多選一的過程),進而得到不同的結果
JS 語言提供了兩種分支結構語句:if 語句、switch 語句JavaScript基礎-運算符 - if 語句
- 文法結構
語句可以了解為一個行為,循環語句和分支語句就是典型的語句。一個程式由很多個語句組成,一般情況下,會分割成一個一個的語句。// 條件成立執行代碼,否則什麼也不做 if (條件表達式) { // 條件成立執行的代碼語句 }
-
執行流程
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-r1m9CFXv-1580991278493)(images\圖檔14.png)]
- if else語句(雙分支語句)
- 文法結構
// 條件成立 執行 if 裡面代碼,否則執行else 裡面的代碼 if (條件表達式) { // [如果] 條件成立執行的代碼 } else { // [否則] 執行的代碼 }
-
執行流程
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-JG246qIF-1580991278495)(images\圖檔15.png)]
- 文法結構
- if else if 語句(多分支語句)
- 文法結構
// 适合于檢查多重條件。 if (條件表達式1) { 語句1; } else if (條件表達式2) { 語句2; } else if (條件表達式3) { 語句3; .... } else { // 上述條件都不成立執行此處代碼 }
-
執行邏輯
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-OXvVrxhu-1580991278495)(images\圖檔16.png)]
- 文法結構
2.4 三元表達式
- 文法結構
- 執行思路
- 如果表達式1為 true ,則傳回表達式2的值,如果表達式1為 false,則傳回表達式3的值
- 簡單了解: 就類似于 if else (雙分支) 的簡寫
2.5 switch分支流程控制
-
文法結構
switch 語句也是多分支語句,它用于基于不同的條件來執行不同的代碼。當要針對變量設定一系列的特定值的選項時,就可以使用 switch。
switch( 表達式 ){ case value1: // 表達式 等于 value1 時要執行的代碼 break; case value2: // 表達式 等于 value2 時要執行的代碼 break; default: // 表達式 不等于任何一個 value 時要執行的代碼 }
- switch :開關 轉換 , case :小例子 選項
- 關鍵字 switch 後面括号内可以是表達式或值, 通常是一個變量
- 關鍵字 case , 後跟一個選項的表達式或值,後面跟一個冒号
- switch 表達式的值會與結構中的 case 的值做比較
- 如果存在比對全等(===) ,則與該 case 關聯的代碼塊會被執行,并在遇到 break 時停止,整個 switch 語句代碼執行結束
-
如果所有的 case 的值都和表達式的值不比對,則執行 default 裡的代碼
注意: 執行case 裡面的語句時,如果沒有break,則繼續執行下一個case裡面的語句。
- switch 語句和 if else if 語句的差別
- 一般情況下,它們兩個語句可以互相替換
- switch…case 語句通常處理 case為比較确定值的情況, 而 if…else…語句更加靈活,常用于範圍判斷(大于、等于某個範圍)
- switch 語句進行條件判斷後直接執行到程式的條件語句,效率更高。而if…else 語句有幾種條件,就得判斷多少次。
- 當分支比較少時,if… else語句的執行效率比 switch語句高。
- 當分支比較多時,switch語句的執行效率比較高,而且結構更清晰。