1. 程式人生 > >【JS】JavaScript表示式

【JS】JavaScript表示式

JavaScript表示式中最簡單的一類表示式就是常量,變數名也是一種簡單的表示式,將簡單的表示式組合成複雜表示式最常用的方法就是使用運算子。JavaScript表示式的型別多種多樣,下面逐個說明。

1、原始表示式

原始表示式是表示式的最小單位,包含常量或直接量、關鍵字和變數。

2、物件和陣列的初始化表示式

物件和陣列的初始化表示式實際上是一個新建立的物件和陣列。陣列初始化表示式是通過一對方括號和其內由逗號隔開的列表構成的,逗號之間的元素可以省略,省略的空位會填充值undefined,結尾處可以留下單個逗號,但逗號後面並不會建立一個新的值為undefined的元素。物件初始化表示式和陣列初始化表示式非常類似,只是方括號被花括號代替,並且每個元素都包含了屬性名、冒號和屬性值。物件和陣列的初始化表示式都支援巢狀,其元素可以是物件或陣列。

3、函式定義表示式

函式定義表示式定義一個JavaScript函式,表示式的值就是這個新定義的函式,一個典型的函式定義表示式包含關鍵字function,跟隨其後的是一對圓括號,括號內是一個以逗號分隔的列表,列表含有0個或多個引數名,然後再跟隨一個由花括號包裹的JavaScript程式碼段。

4、屬性訪問表示式

屬性訪問表示式運算得到一個物件屬性或一個數組元素的值。JavaScript為屬性訪問定義了兩種語法,第一種語法是一個表示式後跟隨一個句點和識別符號,表示式指定物件,識別符號則指定需要訪問的屬性的名稱。第二種語法是使用方括號,方括號是另外一個表示式,這種方法適用於物件和陣列,第二個表示式指定要訪問的屬性的名稱或者代表要訪問陣列元素的索引。

5、呼叫表示式

JavaScript的呼叫表示式是一種呼叫函式或方法的語法表示。它以一個函式表示式開始,這個函式表示式指代了要呼叫的函式,函式表示式後跟隨一對圓括號,括號內是一個以逗號隔開的的引數列表,引數可以有0個也可有多個。

6、物件建立表示式

物件建立表示式建立一個物件並呼叫建構函式初始化新物件的屬性,與函式呼叫表示式非常類似,只是物件建立表示式之前多了一個關鍵字new。如果一個物件建立表示式不需要傳入任何引數給建構函式的話,那麼這對空圓括號是可以省略掉的。

7、運算子

同其它程式語言如C/C++一樣,JavaScript的運算子也包括一元運算子、二元運算子和三元運算子,使用運算子要考慮優先順序和結合性,以及左值、右值。JavaScript中除了常見的符號運算子外,還有一些關鍵字運算子,如delete刪除屬性、typeof檢測運算元型別、void返回undefined值、instanceof測試物件類、in測試屬性是否存在等。運算子可用於算術表示式、比較表示式、邏輯表示式、賦值表示式等。

+是一個有意思的運算子,除了數字加法之外,還可用於字串連線,用作一元運算子時把運算元轉換為數字或者NaN。位運算子會將NaN、Infinity和-Infinity都轉換為0。右移分為帶符號右移>>和無符號右移>>>。判等運算子除了==和!=之外,還有===和!==,表示恆等判斷。delete是一元操作符,它用來刪除物件屬性或者陣列屬性,然而並不是所有的屬性都是可以刪除的,一些內建核心和客戶端屬性是不能刪除的,使用者通過var語句宣告的變數不能刪除,同樣通過function語句定義的函式和函式引數也不能刪除。逗號運算子時二元運算子,它的運算元可以是任意型別,它首先計算左運算元,然後計算右運算元,最後返回右運算元的值。

8、eval()

eval()只有一個引數。如果傳入的引數不是字串,它直接返回這個引數。如果引數是字串,他會把字串當成JavaScript程式碼進行編譯,如果編譯失敗則丟擲一個語法錯誤異常。如果編譯成功,則開始執行這段程式碼,並返回字串的最後一個表示式或語句的值,如果最後一個表示式或語句沒有值,則最終返回undefined。如果字串丟擲一個異常,這個異常將把該呼叫傳遞給eval()。關於eval()最重要的是,它使用了呼叫它的變數作用域環境,也就是說,它查詢變數的值和定義新變數和函式的操作和區域性作用域中的程式碼完全一樣。