在JavaScript中,表示式是由數位、算符、數位分組符號(括號)、自由變數和約束變數等以能求得數值的有意義排列方法所得的組合;表示式可分為兩種:原始表示式和複雜表示式。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
一般地,關於javascript基礎語法,人們聽得比較多的術語是操作符和語句。但是,其實還有一個術語經常使用,卻很少被提到,這就是javascript表示式(expression)。本文將詳細介紹javascript表示式
什麼是表示式?
表示式,是由數位、算符、數位分組符號(括號)、自由變數和約束變數等以能求得數值的有意義排列方法所得的組合。約束變數在表示式中已被指定數值,而自由變數則可以在表示式之外另行指定數值。
javascript表示式分為原始表示式和複雜表示式
原始表示式(primary exression)
原始表示式是表示式的最小單位——它不再包含其他表示式
原始表示式分為字面量、關鍵字和變數;詳細來說包括this關鍵字、識別符號參照、字面量參照、陣列初始化、物件初始化和分組表示式
PrimaryExpression : this Identifier Literal ArrayLiteral ObjectLiteral ( Expression )
this關鍵字和識別符號
this;//返回當前物件 i;//返回變數i的值 sum;//返回變數sum的值
字面量
字面量(literal),又翻譯成直接量,就是程式中直接使用的資料值
Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteral RegularExpressionLiteral
null; undefined; true; false; 1; 'abc'; /pattern/;
陣列和物件初始化
陣列初始化和物件初始化實際上是一個以字面量的方式描述的初始化的過程。這兩個初始化表示式有時稱做"物件字面量"和"陣列字面量"
[]; [1,2,3]; {}; {a:1};
分組表示式
分組表示式實際上就是括號,用於重寫運運算元的優先順序
複雜表示式(MemberExpression)
複雜表示式由原始表示式和操作符(operator)組合而成,包括屬性存取表示式、物件建立表示式和函數表示式
MemberExpression : MemberExpression [ Expression ] MemberExpression . IdentifierName new MemberExpression Arguments FunctionExpression
屬性存取表示式
屬性存取表示式運算可以得到一個物件屬性或一個陣列元素的值,javascript為屬性存取定義了兩種語法
MemberExpression . IdentifierName MemberExpression [ Expression ]
第一種寫法是一個表示式後跟隨一個句點和識別符號。表示式指定物件,識別符號則指定需要存取的屬性的名稱
第二種寫法是使用方括號,方括號內是另外一個表示式(這種方法適用於物件和陣列)。第二個表示式指定要存取的屬性的名稱或代表要存取陣列元素的索引
var o = {x:1,y:{z:3}}; //物件字面量 var a = [o,4,[5,6]]; // 包含物件的陣列字面量 o.x;//表示式o的x屬性 o.y.z;//表示式o.y的z屬性 o['x'];//物件o的x屬性 a[1];//表示式a中索引為1的元素
不管使用哪種形式的屬性存取表示式,在'.'和'['之前的表示式總是會首先計算
如果計算結果是null或undefined,表示式會丟擲一個型別錯誤異常,因為這兩個值都不能包含任意屬性
如果計算結果不是物件,javascript會將其轉換為物件
如果物件表示式後跟隨句點和識別符號,則會查詢由這個識別符號指定的屬性值,並將其作為整個表示式的值返回
如果物件表示式後跟隨一對方括號,則會計算方括號內的表示式的值並將其轉換為字串
不論哪種情況,如果命名的屬性不存在,那麼整個屬性存取表示式的值就是undefined
物件建立表示式
物件建立表示式建立一個物件並呼叫一個函數初始化新物件的屬性
new Object(); new Point(2,3);
如果一個物件建立表示式不需要傳入任何引數給建構函式的話,那麼這對空圓括號是可以省略的
new Object;
函數表示式
函數表示式分為函數定義表示式和函數呼叫表示式
函數定義表示式定義一個javascript函數,表示式的值是這個新定義的函數
一個典型的函數定義表示式包含關鍵字function,跟隨其後的是一對圓括號,括號內是一個以逗號分割的列表,列表含有0個或多個識別符號(引數名),然後再跟隨一個由花括號包裹的javascript程式碼段(函數體)
function square(x){ return x*x; }
函數定義表示式同樣可以包含函數的名字,函數也可以通過函數語句來定義,而不是函數表示式
var square = function(x){return x*x;}
函數呼叫表示式是一種呼叫或執行函數或方法的語法表示。如果這個表示式是一個屬性存取表示式,那麼這個呼叫稱做方法呼叫
f(0); Math.max(x,y,z); a.sort();
【相關推薦:】
以上就是JavaScript中什麼是表示式的詳細內容,更多請關注TW511.COM其它相關文章!