JavaScript:The Good Parts(二)

4760 ワード

第2章文法(Graammar)
2.1ブランク(Whitess pace)
2.2識別子(Names)
2.3数字(Numbers)
2.4文字列(Strings)
2.5文(Sttements)
2.6式(Expressions)
2.7字面量(Literals)
2.8関数(Functions)
この章はJSの精華部分の文法を紹介し、その言語構造を簡単に概説します.
2.1ブランク(Whitess pace)
空白は書式設定された文字やコメントの形式として表現されます.
(1)文字の書式設定
   
var that= this;  //            (var that            )
(2)コメント
JSは二種類の注釈形式を提供しています.一つは/*/で囲まれたブロックの注釈で、もう一つは/で始まる行の注釈です.ブロック注釈文字は正規表現の上にも存在するので、ブロック注釈は注釈されたコードブロックにとって安全ではない.ブロックコメントの使用はできるだけ避けて、行コメントの使用を推奨します.
(疑惑:この注釈に関する説明は、この節の冒頭で述べた空白または注釈として表現されている形式とどのような関係があるかは確認されていない)
2.2識別子(Names)
識別子はアルファベットで始まり、その後、選択的に1つ以上のアルファベット、数字、または下線を追加することができます.識別子は予約ワードを使用できません.
識別子は、ステートメント、変数、パラメータ、属性名、およびマークに使用されます.
識別子の英訳からNamesは人間の名前として簡単に理解でき、JAVA言語における識別子はクラス、変数または方法の名称を付与するものである.
2.3数字(Numbers)
(1)JSには単一の数字タイプしかありません.内部表示は64ビットの浮動小数点で、javaのdoubleと同じです.私たちが知るべき数字に関するすべては数字です.
(2)数字の字面数指数の表現方式:
alert(100==1e2);  //true
(3)値NaNは数値であり、正常な結果を生成できない演算結果を表しています.NaNは自分を含めていかなる値にも等しくない.isNaN(Number)でNaNを検出できます.
var test1="300";
var test2="Hello World!";
document.writeln(Number(test1));  //300
document.writeln(Number(test2));  //NaN
(4)値Infinityは、すべて1.79769313486231570 e+308より大きい値を表しています.
(5)デジタルは方法を持ち、JSには対象Mathがあり、これは一連の数字のための方法を含む.
2.4文字列(Strings)
(1)文字列の字面量は、単引用符または二重引用符に囲まれ、0文字以上を含むことができます.JSが作成された場合、ユニックは16ビットの文字セットですので、JSの全文字は16桁です.
(2)JSには文字タイプがありません.1文字を表すには、1文字を含む文字列を作成するだけでいいです.
(3)変換記号は、これらのポリシーの場合は許容されない文字を文字列に挿入することができます.たとえば、バックスラッシュ、クォーテーションマーク、および制御文字などです.\u予約で指定可能な数字は、文字コードが.
alert("A"=="\u0041");  //true
(4)文字列にはlength属性があります.例えば、「セブン」です.レングスは5です.
(5)文字列は可変ではない.文字列が作成されると、いつまでも変更できません.しかし、+演算子で文字列を接続することによって、新しい文字列を得ることは容易である.
alert('c'+'a'+'t'==='cat');  //true
(6)文字列にはいくつかの方法があります.
'cat'.toUpperCase()==='CAT'
2.5文(Sttements)
(1)コンパイルユニットは、実行可能なステートメントのセットを含む.ウェブブラウザでは、各タグがコンパイルされ、すぐに実行されるコンパイルユニットを提供します.リンク器が足りないので、JSはそれらを共通のグローバル名前空間に投げ入れます.
(2)var文が関数の内部で使用される場合、この関数のプライベート変数が定義されます.
(3)switch、while、for、do文はオプションの前置ラベル(label)を許可して、break文に合わせて使用します.
(4)ステートメントは、上から下までの順序で実行されます.JSは条件文(ifとswitch)、循環文(while、forとdo)、強制ジャンプ文(break、return、throw)、および関数呼び出しによってこの実行シーケンスを変えることができます.
(5)コードブロックはペアの括弧に包まれた文のセットです.多くの他の言語と違って、JSのコードブロックは新しいスコープを作成しないので、変数はコードブロックではなく関数の先端に定義されるべきです.
(6)if文は、表現の値に応じてプログラムの制御フローを変更します.下記の値は偽(falsy):①false、②null、③undefined、④空の文字列'、⑤数字0、⑥数字NaNとされます.他のすべての値はtrue、文字列'false'およびすべてのオブジェクトを含む真のものとして扱われます.
(7)switch文は一つの分岐を実行します.その表式の値をすべての指定されたcase条件と一致させます.この表式は、数値または文字列を生成することができます.正確なマッチングが見つかった時にcase従文を実行します.マッチが見つからなかったら、任意のdefault文を実行します.
while文は簡単なループを実行します.表式が偽の場合、ループは終了します.表式が本当の場合、コードブロックが実行されます.
for文には2つの形式があります.①一般的な形式は3つの任意の従属文によって制御されます.初期化従文、条件従文、増分従文.②もう一つの形式(for inと呼ばれる)は、一つのオブジェクトの属性名(またはキー名)を列挙します.この属性名はオブジェクトのメンバーなのか、それともプロトタイプのメンバーなのかを判定します.
for(myvar in obj){
    if(obj.hasOwnProperty(myvar)){
        ...
    }
}
do文はwhile文のように、唯一の違いは、コードブロックが実行された後に式の値を検出することであり、コードブロックが少なくとも一回実行されることを意味する.
(8)try文はコードブロックを実行し、コードが投げた異常を捕捉します.catchは文から新しい変数を定義して、この異常対象を受信します.
throw文は異常を投げます.throw文が一つのtryコードブロックにあると、コントロールはcatchの従属文にジャンプします.throw文が関数内にある場合、この関数の呼び出しは放棄され、制御権はその関数のtry文を呼び出すcatch従文にジャンプします.
throw文の表現は、一般的にオブジェクトの字面量であり、name属性とメッセージ属性が含まれています.異常捕捉器は、これらの情報を用いて、何をすべきかを決定することができる.  (この内容は関数一章の異常を参照してください.)
(9)return文は一つの関数を先に返します.戻り値を指定することもできます.戻り値が指定されていない場合、その戻り値はundefinedです.JSはreturnキーワードと表現の間で改行を許さない.
break文は、手順を循環文またはswitch文から退出させます.これはオプションのラベルを指定できます.このラベルのステートメントをプログラムが終了します.JSは、breakキーワードとラベルの間で改行することができません.
(10)1つのexprisions文は、1つまたは複数の変数またはメンバに値を割り当てたり、方法を呼び出したり、オブジェクトから属性を削除したりすることができます.
2.6式(Expressions)
(1)最も簡単な表現は、文字列量、変数、内蔵値、newプリアンブルでの呼び出し式、deleteプリアンブルでの属性アクセス式、丸括弧に含まれる式、一つのプレフィックス演算子を先頭とする式、または式の後に続く:①一つの挿入演算子と別の式、②三元演算子?他の表式に続いて、次の表式を行います.次に、3つ目の表式、③一つの関数が式を呼び出します.④一つの属性が式にアクセスします.
(2)演算子の優先度(略)
(3)typeof演算子の値は'number'、'string'、'object'、'bolean'、'undefined'、'function'があります.演算子が行列またはnullである場合、結果はobjectです.
関数呼び出し誘発関数を実行します.関数呼び出し演算子は、関数名の後に続く一対の丸括弧です.括弧の中には、この関数に渡すパラメータが含まれています.
属性アクセス式は、オブジェクトまたは配列の属性要素を指定します.
2.7字面量(Literals)
(1)オブジェクトの字面量は、新規オブジェクトを指定しやすい表示法です.属性名は、識別子または文字列とすることができます.これらの名前は字面の数量名として変数の名来ではないので、対象の属性名がコンパイルされた時に分かります.属性の値は式です.
(2)配列の字面量は、新しい配列を指定しやすい表示法です.
2.8関数(Functions)
関数の値を関数の数で定義しました.再帰的に自分を呼び出すための任意の名前があります.これらのパラメータは呼び出し時に渡される実際のパラメータによって初期化されます.関数の本体には変数定義とステートメントが含まれます.