1.表達式javascript
1.1原始表達式:包括常亮或直接量,關鍵字和變量。其中直接量是直接在表達式中出現的常量。java
1.2對象和數組的初始化表達式:他們不是原始表達式,由於他們所包含的成員或元素都是子表達式。數組
注:對於var arr = [,];在ie下數組長度爲2,火狐和谷歌瀏覽器下長度爲1,最後一個逗號後的建立新的undefined元素。瀏覽器
1.3 函數定義表達式函數
1.4屬性訪問表達式:獲得的是一個對象屬性或數組元素值,訪問方式爲 e.屬性名稱 或e[索引];若是訪問結果爲null或undefined,則拋出錯誤;若是屬性名稱是一個保留字或包含空格和標點符號或一個數字則必須使用方括號的寫法。優化
1.5調用表達式 是一種調用(或執行)函數或方法的語法表示。它以一個函數表達式開始,這個函數表達式指要調用的函數,例 fn(0);spa
1.6 對象建立表達式 建立一個對象並調用一個函數(這個函數稱爲構造函數)code
2.運算符對象
2.1 算數表達式blog
2.2 邏輯表達式
2.3 賦值表達式
優先級排序
在javascript中全部數字的類型都是浮點型,除法結果也是浮點型,同時 0/0 爲NaN。
求餘運算的結果一般爲整型,但也適用於浮點數
2.4 關於「+」運算符:
(1)若是其中一個操做符是對象,則對象會遵循對象到原始值得轉換規則轉換爲原始類值;
(2)在進行對象到原始值得轉換後,若是其中一個操做數是字符串的話,另外一個操做也可換成字符串,而後進行字符串鏈接。不然二者都會轉換成數字或NaN,而後進行加法。
2.5 in運算:左邊操做數是一個字符串或能夠轉換爲字符串,右操做數是一個對象。若是右側的對象擁有一個名爲左操做數的值的屬性,則返回true。
2.6 instanceof 左邊操做符爲一個對象,有操做數標識對象的類。若是左側的對象是右側類的實例則返回true;
2.7 eval() 若是一個函數調用了eval(),那麼解析器沒法對這個函數作進一步的優化。而將eval()定義爲函數的另外一個問題是他能夠被賦予其餘名字。
其只有一個參數,若是傳入的不是字符串,他直接返回這個參數。若是是字符串則當成javascript進行編譯,若是編譯錯誤則報錯,若是正確返回值,入沒有值返回undefined。它查找變量的值和定義的新變量和函數的操做和局部變量中徹底同樣。直接調用eval()時,他老是在調用它的上下文做用域內執行,其餘調用爲則使用全局對象做爲其上下文做用域,而且沒法讀、寫、定義局部變量和函數。eval()容許咱們執行那些對上下文沒有任何依賴的全局腳本代碼段。
注:ie定義了一個名叫ExecScript()全局函數來完成eval的功能。
2.8 typeof 返回值爲操做值對象的的一個字符串
2.9 delete 用來刪除對象屬性或數組元素,但不能返回值;注:用戶用var語句聲明的不能被刪除一樣,經過function定義的函數和函數參數不能被刪除。
例:
var ob ={x:1,y:2};
delete ob.x;
x in ob //false,x已經被刪除不存在於ob內
2.10 void 出如今操做數以前操做數能夠爲任意類型,操做數會照常計算,但忽略結果並返回undefined