JAvascript基礎構文-式

5846 ワード

×
ディレクトリ[1]元の式[2]複雑な式

前の話


一般的にjavascriptの基礎文法については、オペレータと文という用語が多く聞かれます.しかし、実際にはもう一つの用語がよく使われていますが、これはjavascript式(expression)です.Javascript式について詳しく説明します.式は元の式と複雑な式に分けられます.
 

元の式(primary exression)


元の式は式の最小単位です.他の式は含まれません.JAvascriptの元の式には、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/;

配列とオブジェクトの初期化
配列初期化とオブジェクト初期化は、実際には字面量で記述された初期化のプロセスである.この2つの初期化式は、オブジェクトの直接量と配列の直接量と呼ばれる場合があります.
[];
[1,2,3];
{};
{a:1};

グループ式
パケット式は実際にはカッコで、演算子の優先度を書き換えるために使用されます.
 

複雑な式(MemberExpression)


複雑な式は、プロパティ・アクセス式、オブジェクト作成式、関数式など、元の式とオペレータを組み合わせたものです.
MemberExpression : 
MemberExpression [ Expression ] 
MemberExpression . IdentifierName 
new MemberExpression Arguments
FunctionExpression 

属性アクセス式
属性アクセス式演算は、オブジェクト属性または配列要素の値を得ることができます.javascriptは、属性アクセスの2つの構文を定義します.
MemberExpression . IdentifierName 
MemberExpression [ Expression ] 

1つ目の書き方は、式の後に1つの句点と識別子に従うことです.式はオブジェクトを指定し、識別子はアクセスするプロパティの名前を指定します.
2つ目の書き方は、角カッコを使用し、角カッコ内に別の式を使用します(この方法はオブジェクトと配列に適用されます).2番目の式は、アクセスするプロパティの名前または配列要素にアクセスするインデックスを指定します.
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();

 

参考資料


【1】ES 5/式https://www.w3.org/html/ig/zh/wiki/ES5/expressions【2】『javascript権威ガイド(第6版)』第4章式と演算子【3】『javascript言語エッセンス(改訂版)』第2章文法