02【JS基礎】-【 運算子】運算子 /  算數運算子 /  遞增和遞減運算子 /  比較運算子 / 邏輯運算子 / 賦值運算子 / 運算子優先順序

2020-08-08 21:30:12

第二天JS 符】

運算子 /  算數運算子 /  遞增和遞減運算子 /  比較運算子 / 邏輯運算子 / 賦值運算子 / 運算子優先順序

 

. 運算子

1. 運算子(operator

也被稱爲操作符,是用於實現賦值、比較和執行算數運算等功能的符號。

JavaScript中常用的運算子有: 算數運算子 遞增和遞減運算子 比較運算子 邏輯運算子 賦值運算子

2. 數運

2.1 術運算符

概念:算術運算使用的符號,用於執行兩個變數或值的算術運算

2.2 浮點數的精度問題

浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數。

所以:不要直接判斷兩個浮點是否相等 !

2.3

1. 們怎麼個數被整除呢的餘0 這個數能被整除, 就是 % 取餘算符的主要用

2. 請問 1 + 2 * 3 果是果是7 ,注意算術運算符的,先乘除,後加,有小括先算小括

2.4 表達式和返回值

:是由數位、運算子、變數等以能求得數值的有意義排列方法所得的組合 簡單理解:是由數位、運算子、變數等組成的式子

式最有一個結果,返回,我返回

 

3. 增和遞減運

3.1 增和遞減運算符

如果需要反覆 反復給數位變數新增或減去1,可以使用增(++)和遞減 -- 運算子來完成。

在 JavaScript 中,遞增(++)和遞減( -- )既可以放在變數前面,也可以放在變數後面。放在變數前面時, 我們可以稱爲前置遞增(遞減)運算子,放在變數後面時,我們可以稱爲後置遞增(遞減)運算子。注意:遞增和遞減運算子必須和變數配合使用。

3.2

1. 前置

++num 前置遞增,就是自加1,類似於 num = num + 1,但是 ++num 寫起來更簡單。

使用口訣:先自加,後返回

2. 後置

num++ 後置遞增,就是自加1,類似於 num = num + 1 ,但是 num++ 寫起來更簡單。

使用口訣:先返回原,後自

練習

var a = 10;

++a;

var b = ++a + 2;

console.log(b);

var c = 10;

c++;

var d = c++ + 2;

console.log(d);

var e = 10;

var f = e++ + ++e;

console.log(f);

後置自增:先表達式返回原值,後變數的值再加

 

3.3 前置增和後置增小

前置遞增和後置遞增運算子可以簡化程式碼的編寫,讓變數的值 + 1 比以前寫法更簡單

單獨使用時,執行結果相同

與其他程式碼聯用時,執行結果會不同

後置:先原值運算,後自加(先人後己)

前置:先自加,後算(先已後人)

開發時,大多使用後置遞增/減,並且程式碼獨佔一行,例如:num++; 或者 num--;

 

4. 較運

4.1 較運算符

概念:比較運算子(關係運算符)是兩個數行比較時所使用的算符,比較運算後,返回一布爾true / false作爲比較運算的結果

【總結】

練習

var num1 = 10;

var num2 = 100; v

ar res1 = num1 > num2;

var res2 = num1 == 11;

var res3 = num1 != num2;

 

5. 邏輯運

5.1 邏輯運算符

概念:邏輯運算子是用來進行布爾值運算的運算子,其返回值也是布爾值。後面開發中經常用於多個條件的判斷

 

5.2 邏輯與&&

兩邊都是 true才返回 true,否則返回 false

5.3 邏輯或 ||

兩邊都爲 false 才返回 false,否則都爲true

5.3 邏輯

邏輯非(!)也叫作取反符,用來取一個布爾值相反的值,如 true 的相反值是 false

練習

var num = 7;    

var str = "我愛你~中國~";  // 7

console.log(num > 5 && str.length >= num);  // t + t = t

console.log(num < 5 && str.length >= num);  // f + t = f

console.log(!(num < 10));  // !t = f

console.log(!(num < 10 || str.length == num));  //!( t + T) = f

 

5.4 短路算(邏輯

短路算的原理:當有多個表達式時,的表可以確定,就不再繼續算右

除了0 之外,所有得表達式都是真的

如果有空或者否定爲假,其餘爲真: 0 null undefined NaN

1. 邏輯與&&

語法: 表達式1 && 表達式2

如果第一式的值爲真返回表2

如果第一式的值爲假,返回表1

à 返回假的,如果是真的就返回下一個

console.log( 123 && 456 ); // 456

console.log( 0 && 456 ); // 0

console.log( 123 && 456&& 789 ); // 789

2. 邏輯或

語法: 表達式1 || 表達式2

如果第一個表達式的值爲真,則返回表達式1

如果第一個表達式的值爲假,則返回表達式2

  • 返回真的, 如果假的就返回後邊得

console.log( 123 || 456 ); // 123

console.log( 0 || 456 ); // 456

console.log( 123 || 456 || 789 ); // 123

var num = 0;

console.log(123 || num++);

console.log(num);

 

6. 賦值運算符

概念:用來把數據賦值給變數的運算子

 

Num = num + 1;  è num ++ // num = num + 2; è num += 2

 

7. 算符

一元運算子裏面的邏輯很高 / 邏輯與比邏輯或優先順序高

練習 1

console.log( 4 >= 6 || '人' != '阿凡達' && !(12 * 2 == 144) && true)

var num = 10;

console.log( 5 == num / 2 && (2 + 2 * num).toString() === ‘22’);

 

練習 2

var a = 3 > 5 && 2 < 7 && 3 == 4;

console.log(a); var b = 3 <= 4 || 3 > 1 || 3 != 2;

 

console.log(b);

 

var c = 2 === "2";

console.log(c);

 

var d = !c || b && a ;

console.log(d);

 

 

二,JavaScript 流程控制-分支

u 流程控制 u 順序流程控制 u 分支流程控制 if 語句 u 三元表達式 u 分支流程控制 switch 語句

1. 流程控制

在一個程式執行的過程中,各條程式碼的程式的果是有直接影很多時候我們要通過控制程式碼 的來實現要完成的功能

簡單理解: 流程控制就是控制我的代按照什麼結構順來執

流程控制主要有三種結構,結構、分支結構和循環結構,這三種結構代表三種程式碼執行的順序。

2. 序流程控

順序結構是程式中最簡單、最基本的流程控制,它沒有特定的語法結構,程式會按照程式碼的先後順序,依次執行, 程式中大多數的程式碼都是這樣執行的。

3. 分支流程控制 if

3.1 分支結構

由上到下執行程式碼的過程中,根據不同的件,執行不同的路(執行程式碼一的),從而得到不同的結果

JS 語言提供了兩種分支結構語句 : if 語句 /  switch 語句

3.2 if 語句

1. 結構

// 件成立行代,否也不做

if (條件表達式) { // 條件成立執行的程式碼語句 }

 

語句可以理解爲一個,循環語句和分支句就是典型的。一個程式由很多個語句組成,一般情況下,會分 割成一個一個的語句。

2. 行流程

案例 進入網咖 出一個輸入框,要求用戶輸入年,如果年大於等於 18 ,允進網咖。

案例分析

① 彈出 prompt 輸入框,使用者輸入年齡, 程式把這個值取過來儲存到變數中

② 使用 if 語句來判斷年齡,如果年齡大於18 就執行 if 大括號裏面的輸出語句

3.3 if else句(分支句)

1. 語結構

// 件成立 if 裏面代,否則執else 裏面的代

if (條件表達式) { // [如果] 條件成立執行的程式碼 }

else { // [否則] 執行的程式碼 }

 

2. 行流程

案例 2:判斷閏

接收使用者輸入的年份,如果是閏年就彈出閏年,否則彈出是平年

案例分析

① 演算法:能被4整除不能整除100的爲閏年(如2004年就是閏年,1901年不是閏年)或者能夠被 400 整除的就是閏年

② 彈出prompt 入框,讓使用者輸入年份,把這個值取過來儲存到

③ 使用 if 是否是,如果閏年,就執行 if 大括號裏面的輸出語句,否則就執行 else 裏面的輸出語句

④ 一定要注意裏面的且 && 還有或者 || 的寫法,同時注意判斷整除的方法是取餘爲 0

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

alert("這個年份是閏年");

} else {  // 剩下的是平年

alert("這個年份是平年");

}

 

立完成案例是否中

接收使用者輸入的姓名,來判斷是否中獎, 如果入的是提示中了5塊錢, 否則提示沒有中獎。

案例分析

① 彈出 prompt 輸入框,讓使用者輸入姓名,把這個值取過來儲存到變數中

② 使用 if 語句來判斷是否存在這個姓名,如果存在,就執行 if 大括號裏面的輸出語句,否則 就執行 else 裏面的輸出語句

③ 一定要注意判斷是否相等,用 == 或者 ===

3.4 if else if 句(多分支句)

1. 結構 & 2. 行流程

案例: 判績級別

要求:接收使用者輸入的分數,根據分數輸出對應的等級字母 A、B、C、D、E。

其中:

1. 90分(含)以上 ,輸出:A

2. 80分(含)~ 90 分(不含),輸出:B

3. 70分(含)~ 80 分(不含),輸出:C

4. 60分(含)~ 70 分(不含),輸出:D

5. 60分(不含) 以下,輸出: E

案例分析

① 按照從大到小判斷的思路

② 彈出prompt輸入框,讓使用者輸入分數,把這個值取過來儲存到變數中

③ 使用多分支 if else if 語句來分別判斷輸出不同的值

 

4. 三元表

三元表達式也能做一些簡單的條件選擇。 有三元運算子組成的式子稱爲三元表達式

1. 結構

表達式1 ? 表達式2 : 表達式3;

2. 行思路

  1. 如果表達式1爲 true ,則返回表達式2的值,如果表達式1爲 false,則返回表達式3的值
  2. 簡單理解: 就類似於 if else (雙分支) 的簡寫

案例0 倒計時得效果;

戶輸字,如果字小於10在前面 0 ,比如01,09 ,如果字大於10不需要,比如 20。

案例分析

戶輸0~59的一個數

如果字小於10這個數字前面0,(加0 不做操作

③ 用一個量接受這個返回,輸出

 

5. 分支流程控制 switch

5.1 結構

switch 語句也是多分支語句,它用於基於不同的來執行不同的代。當要針對變數設定一系列的特定值 的選項時,就可以使用 switch。

switch :開關 轉換 , case :小例子 選項

關鍵字 switch 後面括號內可以是表式或 通常是一個變

關鍵字 case , 後跟一個選項的表達式或值,後面跟一個冒號

switch 式的會與結構中的 case 做比

如果存在匹配全等(===) 則與該 case 關聯的代碼塊會,並在遇到 break 停止,整個 switch 語句程式碼 執行結束

如果所有的 case 的值都和表達式的值不匹配,則執行 default 裡的程式碼

注意: 執行case 裏面的語句時,如果沒有break,則繼續執行下一個case裏面的語句。

案例: 查詢

使用者在彈出框裏面輸入一個水果,如果有就水果的價格如果水果就有此水果」。

案例分析

① 彈出 prompt 入框戶輸入水果名,把這個值取過來儲存到中。

將這個變量作 switch 裏面的表

③ case 後面的值寫幾個不同的水果名稱,注意一定要加引號 ,因爲必是全等匹配

④ 彈出不同價格即可。注意每 case 之後加上 break ,以便退出 switch 語句。

⑤ 將 default 爲沒有此水果

var fruit = prompt('請您輸入查詢的水果:  ');

switch (fruit) {

case '蘋果':

alert('蘋果的價格是 3.5/斤');

break;

case '':

alert('榴蓮的價格是 35/斤');

break;

default:

alert('沒有此水果'); }

 

5.2 switch 句和 if else if 句的區別

① 一般情況下,它們兩個語句可以相互替換

switch...case 句通常 case確定的情

if…else…語句更加靈活,常用於斷(大於、 等於某個範圍)

switch 件判直接行到程序的效率更高

而if…else 語句有幾種條件,就得判斷多少次。

④ 當分支比較少時,if… else語句的執行效率比 switch語句高。

⑤ 當分支比較多時,switch語句的執行效率比較高,而且結構更清晰。