1. 程式人生 > 其它 >JavaScript 02 運算子,分支結構

JavaScript 02 運算子,分支結構

一元換算符

字串型別 對於字串,來說自增或自減會自動進行型別轉換

1.var str = '10' 自動轉換 從string轉為number

2.str++ NaN 對於轉化不成功的string型別資料會變為NaN

3.關於布林型別

1為true 0為false

number型別 非0和NaN就是true 自動進行轉換

4.關於null型別

自動轉換對應Boolean型別 然後再從Boolean轉為Number

5.關於undefined

undefined轉換不成功 NaN

6.關於Number型別
一元換算符只能和變數一起 不能出現其他的換算符
進行++ 或者 -- 不管++是前置還是後置都是先轉換為number

比較運算子(關係運算符)

比較運算子 == 返回的都是boolean型別 要麼是true 要麼是false

console.log(typeof null)//object

console.log(typeof undefined) //undefined

>大於 小於<

boolean 自動轉換 true對應1 number型別轉布林型別

null不會自動轉為boolean型別 undefined也不會自動轉換布林型別

==比較的是值
number比較 直接比較大小
number 和 Boolean比較 會把Boolean轉為number再比(0,1)
如果number型別和字串型別比較 如果字串裡面儲存的是數值 那麼對應的就是數值比較
如果對應的字串裡面儲存的是字串 會自動轉為number型別 轉不了就是NaN(NaN和任何比都是false)

console.log('a'>1) // NaN //false

字串跟字串比較 比較的是ascii碼 一套固定的編碼 每個字母都有一個對應的編碼值(區分大小寫)
//a 97 //A 65 //0 48

console.log('a'>'b') //false

console.log('a'>'B') //true

>= <= 只要滿足一個就是true
恆等 === 比較值還要比較地址 == 只是比較值
NaN 特性 不能進行比較 返回結果false

邏輯運算子

與 && 同true則為true 其他都是false
& 斷路與 (效率低,不用)

console.log('A'<'a' && 2>1) // true

console.log('A'<'a' && 2<1) // false

或 || 一個為 true 就是true
| 斷路或 (效率低,不用)

console.log('A'<'a' || 2<1) // true

console.log('a'>'b' || 1>2) // false

非 ! true變false false變true

console.log( ! ('a'<'b') ) ;//false

console.log( ! ('a'>'b') ); //true


//undefined轉為number 為NaN
//undefined值 不需要轉換 != ===
var num1 , num2=10
console.log(num1!=num2 && num1<num2); // false
console.log(num1!=num2 || num1<num2);//true

三元運算子 三目運算子

布林型別表示式 ? true的結果:false的結果
console.log(!0?10:20); //10
console.log(1!=1?10:20) // 20

var num = 'a'>'B'?12+'3':45/2
console.log(num); //123
console.log(typeof num); //string

分支結構

瀏覽器的解析結構順序為 從上到下 從左之右

分支結構 多個分支 進行其中一個
if(布林型別表示式){
分支一
}else{
不滿足上述條件進入的分支
}
一旦進行其中一個分支就不會再進行下一個
分支塊裡面執行的語句只有第一句

switch

switch屬於分支結果

if裡面的表示式為布林型別 Boolean表示式

switch的值表示式 有確定的值
switch case 一起使用

switch(值表示式){

​ case 值1:

​ case 值2:

​ case 值3:

​ default:預設的

}

break 跳出這個switch塊
當不存在break時 會從匹配的選項走到底
當上面的case都不匹配值表示式就會進入default選項
switch支援任意型別的值 就NaN不支援