函數表達式
函數定義表達式定義一個javascript函數。表達式的值是這個新定義的函數。從某種意義上將,函數定義表達式可以成為函數直接量,函數表達式可稱為“函數直接量”,畢竟物件初始化表達式也稱為“物件直接量”。一個典型的函數定義表達式包含關鍵字function,其後是一對圓括號,括號以內是逗號分隔的列表,列表包含0或多個標識符(參數名)。然後跟隨花括號包裹的javascript程式碼段(函數體).
var square = function(x){ return x*x};
屬性存取表達式
屬性存取表達式運算得到一個物件或一個陣列元素的值。 javascript為屬性存取定義了兩種方法。
expression . indentifier expression [expression]
第一種寫法是一個表達式後跟隨一個句點和標識符。表達式指定對象,標識符則指定要存取的屬性明川。
第二章寫法是使用方括號,方括號內是一個表達式(這個方法適用於物件和陣列)。第二個表達式指定要存取的屬性的明川或代表要存取陣列元素的索引。這裡有一些具體的例子
o.x //=>1表达式o的x属性 o.y.z //=>3 表达式o.y的z属性 o.["x"] //=>1的对象o的x属性 a[1] //=>4 表达式a索引为1的元素 a[2]["1"]//=>6 表达式a[2]中索引为1的元素 a[0].x //=>1: 表达式a[0]的x属性
不管使用哪一種形式的屬性來存取表達式,在"."和"["之前的表達式總是會先計算。如果計算結果為null或undefined,則表達式會拋出類型錯誤異常,因為這兩個值都不能包含任意屬性。如果運算結果不是物件或數組,javascript會將其轉換為物件(3章6節內容)
雖然.identifier的寫法更加簡單,但需要注意的是,這種方式只適用於要訪問的屬性名稱是合法的識別符。並且需要知道要存取的屬性名字。如果屬性名稱是保留字或包含空格和標點符號,是一個數字(對於數組來說),則必須使用方括號的寫法。當屬性名稱是透過運算子得出的值而不是固定值的時候,這時候必須使用方括號的寫法。
調運表達式
javascript中的呼叫表達式(invocation expression)是一種呼叫(或執行)函數或方法的語法表示。它以一個函數表達式開始,這個函數表達式指了要呼叫的函數。函數表達式後跟著一對圓括號,括號內是一個以逗號隔開的參數列表。參數可以有0個也可以有多個。
f(0) //f是一個函數表達式:0是一個參數表達式。
Math.max(x,y,z) //Math.max是一個函數;x,y和z是參數
a.sort() //a.sort()是一個函數,它沒有參數。
當呼叫表達式進行求值的時候,先計算函數表達式,然後計算參數表達式,得到一組參數值。如果函數表達式的值不是一個可調用的對象,則拋出一個類型錯誤異常.然後參數的值依次被賦值給形參,這些形參是定義函數時定義的。接下來執行函數體。如果函數使用return語句給出一個回傳值,那麼這個回傳值就是整個呼叫表達式的值。否則,呼叫表達式的值就是undefined.函數呼叫--包括形參表達式的個數和函數定義中實參的個數不匹配的時候運行的情況--的細節將會在第八章詳細說明。
任何一個呼叫表達式都包含一對圓括號和左圓括號之前的表達式,如果這個表達式是一個屬性存取表達式,那麼這個呼叫叫做「方法呼叫」(method invication)。在方法呼叫中執行函數體的時候,作為屬性存取主體的物件和陣列便是其呼叫方法內this的指向。這種特性使得在物件導向程式設計的範例中,函數(其OO名稱為「方法」)可呼叫其宿主物件
物件建立表達式
物件建立表達式(object creation expression)建立一個物件並呼叫一個函數(建構函式)來初始化物件的屬性。物件建立表達式和函數呼叫表達式非常類似,只是物件建立表達式之前多了一個關鍵字new:
new Object() new Point(2,3)
以上是javascript函數,屬性,物件建立表達式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!