JavaScript 運算符與邏輯分支

運算符

一元運算符

只能操作一個值的運算符叫做一元運算符

//後取值 先執行運算, 再取值
//前取值 先取值, 再執行運算
 前自加:
  var x=5;
  var num1=++x;  // 相當於x=x+1; var num1=x;
  console.log('num1='+num1+'  x='+x);  //num1=6  x=6

  後自加:
  var x=5;
  var num2=x++;  // 相當於 var num2=x; x=x+1;
  console.log('num2:'+num2+'  x:'+x);  //num2=5  x=6

  前自減:
  var x=5;
  var num3=--x;  //相當於 x=x-1; var num3=x;
  console.log('num3='+num3+'  x='+x);  //num3=4  x=4

  後自減
  var x=5;
  var num4=x--;  //相當於 var num4=x;  x=x-1;
  console.log('num4='+num4+'  x='+x);  //num4=5  x=4

其他類型應用一元運算符的規則

var b = '89';
b++; //90,數值字符自動轉換成數值
var b= 'ab';
b++; //NaN,字符串包含非數值轉成NaN
var b = false;
b++; //1,false轉成數值0,累加就是1
var b = 2.3;
b++; //3.3,直接加1

賦值運算符

賦值運算符用等於號(=)表示,就是把右邊的值賦給左邊的變量。
複合賦值運算符通過 x=的形式表示,x 表示算術運算符。
如: +=, -=, *=, /=, %=等

  =   等於    x=2;
  +=  加等於  x+=3; 等同於x=x+3;
  -=  減等於  x-=3; 等同於x=x-3;  
  *=  乘等於  x*=3; 等同於x=x*3;
  -=  除等於  x/=3; 等同於x=x/3;
  %=  餘等於  x%=3; 等同於x=x%3;

關係運算符

用於進行比較的運算符稱作爲關係運算符

關係運算符的比較規則:

  1. 數字和數字比較, 直接比較大小
  2. 數字和字符串比較, 字符串轉換爲數字後再比較
  3. 字符串和字符串比較, 進行字符的ASCII碼值比較

比較注意事項:

  1. 布爾值 ture=1, false=0
  2. 含有NaN的運算都爲false,undefined 和null 都不等於0或者flase
  3. 如果要恆等, 則必須值和類型都要相等;
> 大於  若左邊數據大於右邊數據,返回 true,否則返回 false。 
3>2 //true

< 小於  若左邊數據小於右邊數據,則返回布爾值true,否則返回false。  
2<3 //true

>=  大於等於  若左邊數據大於或等於右邊數據,返回 true,否則返回 false。 
2>=2 //true
3>=2 //true

<=  小於等於。若左邊數據小於或等於右邊數據,返回 true,否則返回 false。
2<=2  //true
2<=3  //true

==  相等  若兩數據大小相等,返回 true,否則返回 false
2==2 //true
2=='2' //true

!=  不等  若兩數據大小不相等,返回 true,否則返回 false。 
2!=5 //true

=== 全等(恆等) 若兩數據大小和數據類型都相等,返回 true,否則返回 false。
55==='55' //false
55===55  //true

!== 不全等(不恆等) 若兩數據大小或數據類型不相等,返回 true,否則返回 false。
55!=='55' //true
55!==55  //false=0

布爾值 ture=1, false=0
false == 0   //true
true == 1    //true 
true == 2    //false

undefined 是派生自 null 的,兩個數據大小相等,數據類型不等。
null == undefined  //true
null === undefined //false

含有NaN的運算都爲false
'NaN' == NaN  //false
5 == NaN     //false
NaN == NaN   //false

undefined 和null 都不等於0,flase 
null == 0    //false
null == false    //false

undefined == 0    //false
undefined == false    //false

邏輯運算符

邏輯運算符通常用於布爾值的操作,一般和關係運算符配合使用,有三個邏
輯運算符: 邏輯與&&(AND)、邏輯或||(OR)、邏輯非!(NOT)。

&& 邏輯與:
如果第一個操作數返回是 false,第二個數不管是true還是false都會返回false。
即符號兩邊的操作數爲真,返回true,否則返回false。

var flag=(true) && (true)   //true
var flag=(false) && (true)  //false
var flag=(false) && (false)  //false

|| 邏輯或:
如果第一操作數的求值結果爲 true,第二個數不管是true還是false都會返回true。
即符號兩邊的操作數同時爲假,返回false,否則返回true。

var flag=(false) || (false)  //false
 var flag=(true) || (true)    //true
 var flag=(true) || (false)   //true

! 邏輯非:
邏輯非運算符可以用於任何值。無論這個值是什麼數據類型,這個運算符都會返
回一個布爾值。它的流程是:先將這個值轉換成布爾值,然後取反,規則如下:

操作數爲真,返回false,否則返回true
var flag=!(true);   //false
var flag=!(false);  //true

操作數是一個空字符串, 返回true; 非空字符串, 返回false
var flag=!('')     //true
var flag=!('test') //false

操作數是數值0, 返回true; 任意非0數值(包括 Infinity),返回false
var flag=!(0) //true
var flag=!(1)  //false

操作數是NaN, 返回true
var flag=!(NaN) //true

操作數是undefined, 返回true
var flag=!(undefined) //true

字符串運算符

字符串運算符: 字符串運算符只有一個,即:“+”。
它的作用是將兩個字符串相加。 規則:至少一個操作數是字符串

var result1='hello'+'world'; // 兩個都是字符串, 直接連接兩個字符串
console.log(result1); //helloworld
console.log(typeof result1);   

//如果其中有一個是字符串, 另一個是其他類型, 則會先將其他的類型強制轉換成字符,然後再連接
var result2='hello'+2; 
console.log(result2); //hello2
console.log(typeof result2);  

三目運算符(三元條件運算符)

三目運算符(三元條件運算符): 表達式 ? 值1 : 值2
如果表達式的值爲true,則結果取值1。否則爲值2

語法爲:(如果條件表達式的值爲true,則結果取值1。否則爲值2。)
條件表達式 ? 值1 : 值2

var age=11;
var status = (age >= 18) ? "major" : "minor";

當age大於等於18的時候,語句將第一個值“major”賦值給status;否則將第二個值“minor”賦值給status。

運算符的優先級

| 運算符 |描述 |
| ------------- |:-------------: |
| . [] () |對象成員存取、數組下標、函數調用等 |
| ++ -- ~ ! delete new typeof void |一元運算符 |
|* / % |乘法、除法、求餘|
|+ - +|加法、減法、字符串連接|
|<< >> >>>|移位|
|< <= > >= instanceof |關係比較、檢測類實例|
|== != === !==| 恆等(全等)|
|& |位與|
|^ | 位異或|
| | |位或 |
|&& |邏輯與|
| |||邏輯或|
|?:|三元條件|
|= x= |賦值、運算賦值|
|= x= |賦值、運算賦值|
|, |多重賦值、數組元素|

表達式

表達式是javascript中的一個短語,表達式指的是可用於計算的式子,即可能產生一個值的式子。
變量名也是一種簡單的表達式,它的值就是賦值給變量的值。
複雜的表達式由運算符和操作數 (變量或常量) 組成的式子
算術運算符組成的式子叫算術表達式
關係運算符組成的式子叫關係表達式或者條件表達式
邏輯運算符組成的式子叫做邏輯表達式
如:2+3;a+5;c>3; a&&b等

流程控制

JavaScript有三種基本的流程控制結構:順序結構、選擇結構和循環結構,流程控制是用來控制代碼的執行順序。
JavaScrip在順序結構中可以包含選擇結構和循環結構

順序結構:
指按照語句出現的先後順序依次執行

選擇結構:
指按照給定的邏輯條件來決定執行順序。
選擇結構可以分爲單向選擇、雙向選擇和多向選擇。但無論是單向還是多向選擇,程序在執行過程中都只能執行其中一條分支。

循環結構
指根據代碼的邏輯條件來判斷是否重複執行某一段程序。若邏輯條件爲true,則重複執行,即進入循環,否則結束循環。

循環結構可以先判斷邏輯條件,也可以先執行循環體

if單支語句

if條件判斷語句的寫法:
if(表達式){
執行語句
}

當括號內的表達式結果成立( 爲true 時) ,則執行大括號內的語句,否則不執行。

注意:
  1. if後面的()不能省略。
  2. 一條執行語句可以省略{}, 多條時不能省略{}, 建議不管是一條還是多條都寫上{}

if雙分支語句的寫法:

if(表達式){
執行語句1
}
else{
執行語句2
}

當if 括號內的表達式結果成立,執行執行語句1 ,否則執行執行語句2;

注意:else語句必須和if語句搭配出現使用

if多分支語句

if多分支語句的寫法:

if(表達式){
執行語句1
}
else if(表達式2){
執行語句2
}
else if(表達式3){
執行語句3
}
else{
執行語句n
}

從上往下,滿足哪個條件就執行其相對應的語句,都不滿足時,執行最後的else
的語句,只能進入其中之一。

if的嵌套

將整個if語句塊插入另一個if語句塊中

if (表達式1) {
  if (表達式2) {
    if (表達式3){
      語句;
    }
    else{
      語句;
    }
  }
  else{
    語句;
  }
}
注意: 嵌套if時,最好不要超過三層; 內層的每一對if...else代碼要縮進且對
齊;編寫代碼時,else要與最近的if配對。

需求:
輸出不同年齡段的稱呼:
少年:18週歲以下,青年:18週歲至40週歲,中年:40週歲至60週歲,老年:60週歲以上

嬰兒[0歲-1歲)、幼童[1歲-4歲)、小童[4歲-7歲),中童[7歲-13歲)、
大童[13歲-18歲),成年人等於18歲

switch case 語句

用於基於不同的條件來執行不同的動作,如果有多個條件,可以使用嵌套的if語句來解決,但這種方法會增加程序的複雜度,降低程序的可讀性。

//n可以是變量/表達式,將n的值與常量a1、a2、……比較,若n與其中某個值相等時,執行相應數據後面的語句,且當遇到關鍵字break時,程序跳出switch結構;若找不到與n相等的值,則執行關鍵字default下面的語句。

switch(n)
{
    case a1:
        執行代碼塊 1
        break;
    case a2:
        執行代碼塊 2
        break;
    default:
        與 case a1 和 case a2 不同時執行的代碼
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章