對於變量名,鍵值對中的鍵名應知足以下要求:正則表達式
_
)或美圓符號($
)這裏,關鍵字就是在 js 中有特殊意義的單詞,而保留字是爲了之後使用預留的詞語。但不要求背它們,隨着學習的深刻,天然就都記住了。數組
常見的關鍵字有:瀏覽器
break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、debugger、finally、new、true、const、with、let、default、for、null、try、async 等等async
常見的保留字有:函數
class、enum、export、extends、import 、super等等學習
本文可能會直接用到的有:this
Javascript 基本類型包括:數值,字符串,null,undefined 和布爾型。還有 ES6 中的 Symbol 類型,這篇博客暫時先不提 Symbol 類型。spa
好比:debug
var num = 1; //數值型 var str = 'hello world'; //字符串,雙引號也能夠 var flag = true; //布爾型,取值 true 或 false var obj = null; //空類型 var it = undefined; //undefined
這裏簡單解釋一下須要注意問題:code
js 中其實除了基本類型之外其餘類型的本質都是對象,就算是基本類型變量,除了 undefined 和 null 之外,都有其對應的對象類型。以下:
var num = new Number(2); var str = new String('hello'); var flag = new Boolean(true);
這裏必定要清楚,其對象類型和基本類型不是一個東西,具體的看完類型轉換就一切都清楚了。
固然,下面繼續說對象,js 經常使用的對象有:Array,Object,Date,RegExp等等。定義方法以下:
var arr = new Array(); //獲得一個空數組 var arr2 = new Array(5); //獲得一個長度爲5的數組,初值爲undefined var arr3 = new Array('b','a','c'); //獲得一個長爲3,對應值爲'b','a','c' 的數組 var obj = new Object(); //獲得一個空對象 var now = new Date(); //獲得當前時間 var reg = RegExp('^[A-Za-z][\w\d]*$'); //獲得一個正則表達式
對於數組、正則表達式和對象還有一種字面量的定義方法,這個方法和上面是徹底等價的:
var arr = []; //獲得一個空數組 var arr3 = ['b','a','c']; //獲得一個長爲3,對應值爲'b','a','c' 的數組 var obj = {}; //獲得一個空對象 var reg = /^[A-Za-z][\w\d]*$/; //獲得一個正則表達式
這個部分直接舉例子:
var arr = [1, 2, 3, 'a']; //定義一個數組 arr[0]; //1 訪問數組的第1個元素,注意索引從0開始 arr[1]; //2 訪問數組的第2個元素 arr[3]; //'a' 訪問數組的第4個元素 arr[-1], arr[4], arr[1.3]; //undefined 訪問數組越界或索引不正確都返回 undefined
var obj = { name: 'Bob', age: 18, gender: 'M' }; obj.name; //'Bob' 獲取 obj 對象的姓名 obj.age; //18 獲取 obj 對象的年齡 obj.gender; //'M' 獲取 obj 對象的性別
注意當鍵名中有符號也須要加引號。
其他的對象會在之後用到的時候再仔細講
運算符就像咱們數學中的加減乘除,也像數學中的計算規定的前後順序,這裏我直接給出因此運算符的運算順序和實例,必要的解釋在表格後面,沒有解釋到的屬於比較深奧的運算符,記住它的順序便可,功能後續再理解。
優先級 | 運算符 | 結合性 | 舉例 | 說明 |
20 | 圓括號 | n/a | ( … ) | - |
19 | 成員訪問 | 從左到右 | obj.name | - |
需計算的成員訪問 | 從左到右 | obj["name"] | - | |
new (帶參數列表) | n/a | new Person() | - | |
18 | 函數調用 | 從左到右 | fun(args) | - |
new (無參數列表) | 從右到左 | new fun | - | |
17 | 後置遞增 | n/a | a++ | 至關於 a = a + 1; |
後置遞減 | n/a | a-- | 至關於 a = a - 1; | |
16 | 邏輯非 | 從右到左 | !a | - |
按位非 | 從右到左 | ~a | - | |
一元加法 | 從右到左 | +a | - | |
一元減法 | 從右到左 | -a | - | |
前置遞增 | 從右到左 | ++a | - | |
前置遞減 | 從右到左 | --a | - | |
typeof | 從右到左 | typeof 4 | 獲得值的類型 'number' | |
void | 從右到左 | void(0) | 執行表達式並返回 undefined | |
delete | 從右到左 | delete obj.age | 刪除對象屬性 | |
15 | 冪 | 從右到左 | 2**4 | 得16 |
14 | 乘法 | 從左到右 | 2 * 3 | 得 6 |
除法 | 從左到右 | 4 / 2 | 得 2 | |
取模 | 從左到右 | 4 % 3 | 得 1 | |
13 | 加法 | 從左到右 | 1 + 3 | 得 4 |
減法 | 從左到右 | 2 - 3 | 得 -1 | |
12 | 按位左移 | 從左到右 | 32 << 5 | 得 1024 |
按位右移 | 從左到右 | 32 >> 3 | 得 8 | |
無符號右移 | 從左到右 | -32 >>> 2 | 得 1073741816 | |
11 | 小於 | 從左到右 | -1 < 2 | 得 true |
小於等於 | 從左到右 | -1 <= 2 | 得 true | |
大於等於 | 從左到右 | 1 >= 2 | 得 false | |
大於 | 從左到右 | 1 > 2 | 得 false | |
in | 從左到右 | "name" in obj | - | |
instanceof | 從左到右 | li instanceof HTMLElement | - | |
10 | 等號 | 從左到右 | 5 == '5' | 得 true |
非等號 | 從左到右 | 5 != '5' | 得 false | |
全等號 | 從左到右 | 5 === '5' | 得 false | |
非全等號 | 從左到右 | 5 !== '5' | 得 true | |
9 | 按位與 | 從左到右 | 10 & 40 | 得 8 |
8 | 按位異或 | 從左到右 | 10 ^ 40 | 得 34 |
7 | 按位或 | 從左到右 | 10 | 40 | 得 42 |
6 | 邏輯與 | 從左到右 | 0 && 3 | 得 0,不得 false |
5 | 邏輯或 | 從左到右 | 0 || 3 | 得 3,不得 true |
4 | ?: | 從右到左 | 3 != 0 ? 1 : 2 | 得 1 |
3 | 賦值 | 從右到左 | a = 2 | - |
a += 2 | 至關於 a = a + 2 | |||
a -= 2 | 至關於 a = a - 2 | |||
a *= 2 | 至關於 a = a * 2 | |||
a /= 2 | 至關於 a = a / 2 | |||
a &= 2 | 至關於 a = a & 2 | |||
a |= 2 | 至關於 a = a | 2 | |||
a ^= 2 | 至關於 a = a ^ 2 | |||
a %= 2 | 至關於 a = a % 2 | |||
a <<= 2 | 至關於 a = a << 2 | |||
a >>= 2 | 至關於 a = a >> 2 | |||
a >>>= 2 | 至關於 a = a >>> 2 | |||
2 | yield | 從右到左 | yield returnValue; | - |
yield* | 從右到左 | yield* returnValue; | - | |
1 | 展開運算符 | n/a | arr1.push(...arr2) | - |
0 | 逗號 | 從左到右 | a=1, b=2 | 返回最後一個表達式的值 2 |
須要說明的是:
exp ? val1 : val2;
若是 exp 的結果爲 true,整個表達式得 val1, 不然得 val2;