ES 6の基礎知識

3947 ワード

一.letとconts
  • let宣言の変数は所在コードブロック内でのみ有効であり、複数回宣言不可
       
    function demo{
    	let a = 1;
    	console.log(a); ///1
    }
    console.log(a);  //    ReferenceError: a is not defined
    
          
    let a = 1;
    let a = 1;
    a  //Identifier 'a' is already been declared
    
  • constは読み取り専用の定数を宣言し、宣言すると値は基本的な使い方を変えることができない:
    const a = 1;
    a //1
    
    const b;  // SyntaxError: Missing initializer in const declaration
    
    一時的なデッドゾーン:
    var a = 1;
    if(true) {
    	console.log(a); // ReferenceError: a is not defined
    	const a = 2;
    }
    
    ES 6は、コードブロック内にletまたはconstが存在する場合、コードブロックはこれらのコマンド宣言の変数に対してブロックの開始から閉鎖的な役割ドメインを形成することを明確に規定している.コードブロック内では、変数aを宣言する前に使用するとエラーが表示されます.
  • varグローバル変数を宣言し、グローバル範囲内で有効であり、複数回宣言可能
  • letは変数リフトが存在せず、varは変数リフトが存在する
    console.log(a); //ReferenceError: a is not defined
    let a = 1; 
    
    console.log(b); //undefined
    var b = 1;
    
    変数bはvarで変数リフトが存在することを宣言しているので、スクリプトが実行されるとbは既に存在するが、まだ値が付与されていないためundefinedが出力される.変数aはletで変数リフトが存在しないことを宣言し、変数aを宣言する前にaは存在しないので、エラーが発生します.