只能操做一個值的運算符叫作一元運算符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
其餘類型應用一元運算符的規則java
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;
用於進行比較的運算符稱做爲關係運算符函數
關係運算符的比較規則:code
比較注意事項:對象
> 大於 若左邊數據大於右邊數據,返回 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)。ip
&& 邏輯與:
若是第一個操做數返回是 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。it
var flag=(false) || (false) //false var flag=(true) || (true) //true var flag=(true) || (false) //true
! 邏輯非:
邏輯非運算符能夠用於任何值。不管這個值是什麼數據類型,這個運算符都會返
回一個布爾值。它的流程是:先將這個值轉換成布爾值,而後取反,規則以下:console
操做數爲真,返回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(表達式){ 執行語句 }
當括號內的表達式結果成立( 爲true 時) ,則執行大括號內的語句,不然不執行。
注意:
if(表達式){ 執行語句1 } else{ 執行語句2 }
當if 括號內的表達式結果成立,執行執行語句1 ,不然執行執行語句2;
注意:else語句必須和if語句搭配出現使用
if多分支語句的寫法:
if(表達式){ 執行語句1 } else if(表達式2){ 執行語句2 } else if(表達式3){ 執行語句3 } else{ 執行語句n }
從上往下,知足哪一個條件就執行其相對應的語句,都不知足時,執行最後的else
的語句,只能進入其中之一。
將整個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歲
用於基於不一樣的條件來執行不一樣的動做,若是有多個條件,可使用嵌套的if語句來解決,但這種方法會增長程序的複雜度,下降程序的可讀性。
//n能夠是變量/表達式,將n的值與常量a一、a二、……比較,若n與其中某個值相等時,執行相應數據後面的語句,且當遇到關鍵字break時,程序跳出switch結構;若找不到與n相等的值,則執行關鍵字default下面的語句。 switch(n) { case a1: 執行代碼塊 1 break; case a2: 執行代碼塊 2 break; default: 與 case a1 和 case a2 不一樣時執行的代碼 }