JAvascript快速入門7--ECMAscript文法基礎

8072 ワード

ECMAScriptの基礎概念
Java、C、Perlなどの言語に詳しい開発者は、ECMAScriptの文法がこれらの言語の文法を借りているため、把握しやすいことを発見します.JavaとECMAScriptには、いくつかの重要な構文特性が同じであり、完全に異なるものもあります.ECMAScriptの基礎概念は以下の通りである.
  • 大文字と小文字を区別します.Javaと同様に、変数、関数名、演算子、その他のすべてのものは大文字と小文字を区別しています.つまり、変数testは変数Testとは異なります.
  • 変数は弱いタイプです.JavaやCとは異なり、ECMAScriptの変数には特定のタイプはなく、変数を定義するときにvar演算子のみを使用し、任意の値に初期化できます.これにより、変数に格納されているデータのタイプを随時変更することができます(これは避けるべきですが、Web開発として効率を向上させることができます).
  • 各行の末尾のセミコロンはあってもなくてもよい.Java、C、Perlは、文法に合致するために、各行のコードをセミコロン(;)で終了する必要があります.ECMAScriptでは、開発者がコードの行をセミコロンで終了するかどうかを自分で決定できます.セミコロンがなければ、ECMAScriptはこの行のコードの末尾を文の末尾(Visual BasicやVBSScriptと似ている)と見なし、コードの意味を破壊しないことを前提としています.最良のコード作成習慣は、セミコロンがないため、正しく実行できないブラウザもあります.
  • コメントはJava、C、PHP言語のコメントと同じです.ECMAScriptは、これらの言語の注釈構文を借りています.コメントには、1行のコメントと複数行のコメントの2種類があります.一方通行注釈は二重斜線(//)で始まる.複数行のコメントは、単一の斜線とアスタリスク(/*)で始まり、アスタリスクと単一の斜線で終わります(*/).
  • カッコはコードブロックを示します.Javaから参考にしたもう一つの概念はコードブロックです.コードブロックは、左かっこ({)と右かっこ(})の間にカプセル化された一連の順序で実行すべき文を表します.

  • いくつかの例は次のとおりです.
        var txt = "some string";
        TXT = "other string";//TXT    ,      
        alert(txt==TXT);//false
        var str = "string" //      
        var hob = "No";var bob = "Yes";//    ,           
        /*
            
        alert("           ")
        */
        if (txt=="some string") {//   
            alert(true);
        }

     
    変数#ヘンスウ#
    前述したように、ECMAScriptの変数は、var演算子(variableの略)に変数名を付けて定義されます.たとえば、次のようになります.
    var test = "Hello!World!";

     
    この例では、変数testを宣言し、その値を「Hello!World!」(文字列)に初期化します.ECMAScriptは弱いタイプなので、解釈プログラムはtestに明確なタイプ宣言を必要とせずに文字列値を自動的に作成します.1つのvar文で2つ以上の変数を定義することもできます.
    var a = "some",b="string"

     
    前のコードは変数testを定義し、初期値は「some」であり、変数test 2も定義し、初期値は「string」である.ただし、同じvar文で定義された変数は、次のように同じタイプを持つ必要はありません.
    var a=12,b="string";

     
    aとbが2つの異なるデータ型に属していても、ECMAScriptでこのように定義するのは完全に合法的です.Javaとは異なり、ECMAScriptの変数は必ずしも初期化される必要はありません(バックグラウンドで初期化されており、後述します).したがって、次の行のコードも有効です.
    var a;
    //   

     
    また、Javaとは異なり、異なるタイプの値を格納できる変数もあります.これは弱いタイプの変数の利点です.たとえば、変数を文字列タイプの値に初期化し、次のように数値値に設定できます.
        var test = "string";
        alert(test);
        //.....     
        test=123;//     
        alert(test);

     
    このコードは、文字列値と数値値を問題なく出力します.しかし、前述したように、変数を使用する場合、良い符号化習慣は、常に同じタイプの値を格納することである.変数名には2つの簡単なルールが必要です.
  • 最初の文字は、アルファベット、下線()、または美円記号($)
  • でなければなりません.
  • の残りの文字は、下線、美円記号、または任意のアルファベットまたは数値文字であってもよい.

  • 次の変数名はすべて正当です.
        var a;
        var $a;
        var $;
        var _a;
        var _;
        var a23;

     
    もちろん、変数名の構文が正しいからといって、それらを使用すべきではない.変数はまた、有名な命名規則を遵守する必要があります.
  • Camelマーキング-頭文字は小文字で、次の単語は大文字で
  • です.
  • Pascalタグ法-頭文字は大文字で、次の単語は大文字で始まる
  • ハンガリー型マーキング法-Pascalマーキング法で命名された変数の前に小文字(または小文字シーケンス)を付けて、その変数のタイプを説明します.例えば、iは整数、sは文字列
  • を表す.
    次の表は、ECMAScript変数をハンガリー型マーキングで定義するために使用するプレフィックスを示しています.
    を選択します.
    接頭辞

    はいれつ
    a
    aValues
    ブールがた
    b
    bFound
    浮動小数点(数値)
    f
    fValue
    関数#カンスウ#
    fn
    fnMethod
    せいけい
    i
    iValue
    オブジェクト
    o
    oType
    正規表現
    re
    rePattern
    文字列
    s
    sValue
    変形(任意のタイプ)
    v
    vValue
    以下に、いくつかのネーミング例を示します. 
     var userName="CJ";//      
        var UserName="CJ";//Pascal    
        var sUserName="CJ";//       

     
    ECMAScriptのもう一つの興味深い側面(ほとんどのプログラム設計言語との主な違いでもある)は、変数を使用する前に宣言する必要がないことです.例:
        var str ="some";
        otherStr += str+" "+"string";
        alert(otherStr);

     
    上記のコードでは、変数otherStrはvar演算子で定義されていません.ここでは、宣言したように挿入されています.ECMAScriptの解釈プログラムが宣言されていない識別子に遭遇した場合、その変数名でグローバル変数を作成し、指定した値に初期化します.これはこの言語の便利さですが、変数を緊密に追跡できない場合は危険です.最良の習慣は、他のプログラム設計言語を使用するように、常にすべての変数を宣言することです.
    キーワード
    ECMA-262は、ECMAScriptがサポートするキーワードのセットを定義します.これらのキーワードは、ECMAScript文の先頭および/または末尾を識別します.キーワードは保持され、変数名や関数名として使用できないことが規定されています.次はECMAScriptキーワードの完全なリストです.
    break
    else
    new
    var
    case
    finally
    return
    void
    catch
    for
    switch
    while
    continue
    function
    this
    with
    default
    if
    throw
     
    delete
    in
    try
     
    do
    instanceof
    typeof
     
    キーワードを変数名または関数名として使用すると、「Identifier expected」(識別子があるべきで、識別子が欠けている)などのエラーメッセージが得られる可能性があります.
    リザーブワード
    予約語はJavaScriptに対して特別な意味を持つ単語です.したがって、変数名や関数名として使用することはできません.つまり、JavaScriptの将来のバージョンのコマンドかもしれません.新しいバージョンのリリース時にコードを変更せざるを得ないように、使用を避ける必要があります.予約ワードを変数名または関数名として使用する場合、将来のブラウザで予約ワードが実装されない限り、エラーメッセージが受信されない可能性があります.ブラウザが実装すると、単語はキーワードとみなされ、キーワードエラーが発生します.
    ECMAScript 3は、後で保持する単語です.
    abstract
    final
    protected
    boolean
    float
    public
    byte
    goto
    short
    char
    implements
    static
    class
    import
    super
    const
    int
    synchronized
    debugger
    interface
    throws
    double
    long
    transient
    enum
    native
    volatile
    export
    package
    extends
    private
     
     
    ECMAScript 4:ECMAScript 4はまだ実装されていません.ECMAScript 4では、次の文字は予約文字ではありませんが、できるだけ使用しないでください.
    boolean final short byte float static char int double long

    次のは保留字が入っています
    as namespace use false true null is