101_js筆記4_js的進位制 + 運算子 + 流程控制語句
阿新 • • 發佈:2018-11-30
一,進位制
- 16進位制的數字,則需要以0x開頭
- num = 0x18;
- num = 0xcf;
- num = 0xAacf;
- 8進位制的數字,則需要以0開頭
- num = 016;
- 2進位制的數字,則需要以0b開頭
- num = 0b1010;
二,運算子
- 運算子也叫操作符, 通過運算子可以對一個或多個值進行運算
- 按照功能劃分:
- 算術運算子,
- 位運算子,
- 關係運算符,
- 邏輯運算子
- 按照運算元個數劃分:
- 單目運算(只有一個運算元 如 : i++ !),
- 雙目運算(有兩個運算元 如 : a+b;),
- 三目運算(三目運算也稱為問號表示式 a>b ? 1 : 0;)
三,運算子的優先順序
四,算術運算子
- 和C語言不同的是JavaScript中整數除以整數結果是小數
- var res4 = 10 / 3;
- console.log(res4); // 3.3333
- 任何值和NaN做運算都得NaN
- var result = 2 + NaN;
- console.log(result); //NaN
- 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
- var result = true + 1; // + - * / %
- console.log(result); // 2
- result = true + false;
- console.log(result); // 1
- result = 2 + null;
- console.log(result);// 2
- 任何的值和字串做加法運算,都會先轉換為字串,然後再和字串做拼串的操作
- var result = 1 + "123";
- console.log(result); // 1123
- result = 2 + "true";
- console.log(result); // 2true
- 任何的值和字串做- * / %法運算, 都會先轉換為字串轉換為Number
- var result = 2 - "1"; // - * / %
- console.log(result); // 1
- result = "2" - "1";
- console.log(result); // 1
- 取餘運算m%n, n等於0 返回NaN, 其它和C語言一樣
- var result = 10 % 0;
- console.log(result); // NaN
五,正負運算子
- + 正號不會對數字產生任何影響
- var num = 123;
- num = +num;
- console.log(num); // 123
- 對於非Number型別的值,會將先轉換為Number,然後再運算
- var bool = true;
- var res = +bool;
- console.log(res); // 1
- var str = "123";
- res = +str;
- console.log(res); // 123
- var str2 = "123abc";
- res = +str2;
- console.log(res); // NaN, 所以內部不是呼叫parseInt, 而是Number()函式
- var temp = null;
- res = +temp;
- console.log(res); // 0
- 負號
- - 負號可以對數字進行負號的取反
- var num = 123;
- num = -num;
- console.log(num); // -123
六,賦值運算子
- 賦值運算子左邊只能是變數
- var str = 110;
220 = str; // 錯誤寫法- 複合賦值運算子
- += 加後賦值 變數+=表示式 如:a+=1;即a=a+1
- -= 減後賦值 變數-=表示式 如:a-=1;即a=a-1
七,關係運算符
- 對於數值和非數值進行比較時,會將其轉換為數值然後再比較
- 如果符號兩側的值都是字串時,不會將其轉換為數字進行比較, 而會分別比較字串中字元的Unicode編碼
- ==和===:
- ==:判斷值是否相等,會進行資料型別轉換;
- ===:判斷值和型別是否相等,不會進行資料型別轉換;
- != 和!==:
- !=:判斷值是否不相等,會進行資料型別轉換;
- !==:判斷值和型別是否不相等,不會進行資料型別轉換;
- null、undefined 、NaN比較
console.log(null == 0); // false console.log(undefined == 0); // false // 永遠不要判斷兩個NaN是否相等 console.log(NaN == NaN); // false /* * 可以通過isNaN()函式來判斷一個值是否是NaN * 如果該值是NaN則返回true,否則返回false */ var num = NaN; console.log(isNaN(num)); // true // undefined 衍生自 null, 所以返回true console.log(null == undefined); // true; console.log(null === undefined); // false;
八,邏輯運算子
- 邏輯與:&&
- 邏輯或:||
- 邏輯非:!
- 對於非Boolean型別的數值, 邏輯與會自動將其轉換為Boolean型別來判斷
九,流程控制語句
- 選擇結構
- 選擇結構if
- 選擇結構switch
- case判斷是否相等時是全等於(===),而不是等於(==),也就是說既會判斷型別是否相等又會判斷值是否相等
- 和C語言不同的是, JavaScript中case後可以是常量也可以是變數
- 迴圈結構:
- while,
- do while,
- for
- 三大跳轉結構:
- JavaScript中沒有提供C語言中的goto語句, 但是其它的三大跳轉和C語言中一模一樣
- return:立即結束所在函式
- break:
- 立即跳出所在switch語句或迴圈語句, 離開作用範圍沒有意義
- break關鍵字只能用於迴圈語句和switch語句, 在其它地方沒有意義
- continue:
- 立即跳出所在迴圈語句, 離開作用範圍沒有意義
- continue後面的語句永遠不會被執行
- 只能用於迴圈結構, 在其它地方沒有意義