ES 6入門-letとconstコマンド

5668 ワード

letコマンド
ES 6は、変数を宣言するためにletコマンドを追加した.その用途はvarとよく似ていますが、letが宣言した変数はletコマンドが存在するコードブロック内でのみ有効です.次のコードを見てください.
  {
        let a = 10;
        var b = 9;
    }
    alert( a );  // ReferenceError: a is not defined
    alert( b );  //9

次のコードを見てみましょう.
var a = [];
    for(var i = 0; i < 10; i++) {
        var c = i;
        a[i] = function() {
            console.log( c );
        };
    }
    a[6]();  //9

let宣言を使用すると、最後に出力される値は「6」です.コードは次のとおりです.
var a = [];
for (var i = 0; i < 10; i++) {
        let c = i;
        a[i] = function() {
            console.log( c );
        };
}
a[6]();  //6

またlet宣言の変数は昇格しません.次のコードクリップを見てください.
    function do_someting() {
        console.log( a );  //ReferenceError
        let a = 2;
    }

最後にletは、同じ役割ドメイン内で同じ変数を繰り返し宣言することを許さない.
    //   
    {
        let a = 10;
        var a = 1;
    }

    //   
    {
        let a = 10;
        let a = 1;
    }

letは実際にJavaScriptが増加したブロックレベルの役割ドメインである.
    function foo() {
        let n = 6;  
        if (true) {
            let n = 10;
        }
        console.log( n ); //6
    }

上のコードには2つのコードブロックがあり、n変数が宣言されており、実行後に出力されるのは6です.これは、外層コードブロックが内層コードブロックの影響を受けないことを示している.もし、varで変数nを定義するように変更すると、最後に出力は10である.
また、ES 6は、関数自体の役割ドメインがその存在するコードブロックの役割ドメイン内にあることを規定している.
    function f() { console.log("I am outside"); }
    (function () {
        if (false) {
            //        f
            function f() {
                console.log("I am inside");
            }
        }

        f();
    }());

上記のコードフラグメントは、ES 5で実行すると“Iam inside”が得られるが、ES 6で実行すると“Iam outside”が得られる.
constコマンド
constは定数を宣言するために使用されます.宣言されると、値は変更できません.
    const PI = 3.1415;
    console.log( PI ); //PI

    PI = 3;
    console.log( PI );  //3.1415

    const PI = 3.1;
    console.log( PI );  //3.1415

定数の繰り返し定義が間違っていないことに注意しなければならないのは、黙って失敗するだけだ.
constの役割ドメインはletコマンドと同じです.すなわち、宣言されたブロックレベルの役割ドメイン内でのみ有効です.
    if(condition) {
        const MAX = 5;
    }

    //   MAX      (      )

また、const定数も繰り返し宣言できません.
    var message = "Hello!";
    let age = 25;

    //        
    const message = "Goodbye!";
    const age = 30;