変数を宣言します
まずは、ES6前に変数を宣言するための方法を見てみましょう:通常の状況下では、JavaScript、我々は唯一の変数を宣言--varキーワードに、我々は変数に値を代入する=、変数を宣言するために使用するVARを使用しています。ES6では、我々は新しいキーワードを聞かせて使用してのconst変数を宣言することができます、直接または宣言と割り当てを再割り当てすることができます最初の文と一致した変数やメソッドを宣言するためにVARを聞かせ; constとしてあなたが代入して、変数ではなく、最初の文を宣言する際に、宣言し、直接割り当て、それ以外の場合はエラーになりますし、変数は製造後に一度のconstステートメントを宣言しなければならない、それは変更することができない、我々は一般的に理解できるのconst定数を宣言しました。
VaRの STR; // 変数宣言 STR = '学習'; // 変数の代入 するvar STR2 = '学習'; // 直接代入文と のlet STRを; //は、変数宣言 STR = '学習'; // 変数の代入 のlet STR2を = 「学習」; // 直接の文と代入 のconst STR; // エラーにSyntaxErrorキャッチされない:のconst宣言で欠落している初期化子 のconst STR3 =「学習」; // 直接の文と代入
ブロックスコープに作用します
また、異なるスコープとのconstとVAR、constの変数を聞かせステートメントは、現在のブロックスコープにアクセスすることができましょう。
{ せ = 10 。 VaRの B = 1 。 } A // 报错にReferenceError:Aが定義されていません。 B // 1
変数はアップグレードできません
VAR変数は、前に使用され、すなわち変数宣言を持ち上げることができ、未定義であるせ、CONST変数リフト与えられる前に、変数を宣言するために使用されません。
// varがある場合 にconsole.log(FOO); // 出力不定 するvar FOO = 2 ; // にさせた場合 にconsole.log(バー); // にReferenceError所与 せバー= 2。
一時的なデッドゾーン
限りスコープブロックレベルが存在するようにlet或const
コマンドは、変数は、それがもはや被験者外部の影響にこの分野で「バインド」(結合)、希望宣言閉じた範囲を形成します。変数を宣言、スコープの前に、変数を宣言する前に、アクセス変数が与えられます、変数が利用できない人たちは、これを「一時的なデッドゾーン」と呼ばれています。
するvar A = '文字列' ; もし(真){ にconsole.log(A)。// にReferenceError A = 'ABC'; // のReferenceError はconsole.log(a)は、// にReferenceErrorが 聞かせて。 console.log(A)。//は未定義 = 123 。 console.log(A)。// 123 }
またとない声明
変数宣言と同じスコープを許可しないようにしましょう。
= 1をみましょう。 // 1 のvar A = 2; // キャッチされないでSyntaxError:識別子''既に宣言された のvar A = 1; // 1 = 2をしましょう。 // キャッチされないでSyntaxError:識別子「」既に宣言されてい ましょう = 1; // 1 = 2をしましょう。 // キャッチされないでSyntaxError:識別子''既に宣言された のvar A = 1; // 1 のvar A = 2; // 2
constの複合型の定義
自然のconst変数が格納されたデータのメモリアドレスに宣言された変数を変更してはならないです。単一のデータタイプ(数値、文字列、ブール値)のために、その値をメモリアドレスに格納される変数によって指し示さ、定することに等しいです。しかしながら、複合型データ(主にオブジェクトおよび配列)は、可変メモリアドレスは、CONST、このポインタ(すなわち、常に別の固定アドレスをポイント)固定することができることを確認し、実際のデータへのポインタのみを保存する指さそれは、データ構造を指すように、変数ではなく、それは完全に制御することができません。
FOO =定数は{}; // 正常になるように属性を追加fooへの foo.prop = 123 ; foo.prop // 123 // 他のオブジェクトポイントとFOO、エラーになります FOO = {}; // 例外TypeError: " fooが「読み取り専用です
あなたは、変数を宣言するときに、ターゲットを凍結するために、我々はObject.freezeメソッドを使用します。
FOO = CONST Object.freeze({}); // 通常モードの時、次の行に影響を及ぼさない; // 厳密なモード、行が説明する foo.prop = 123。
オブジェクト自体を凍結する、オブジェクトのプロパティは、凍結保存してください。以下は、完全に凍結対象の関数です。
VaRの constantize =関数(OBJ){ Object.freeze(OBJ)。 Object.keys(OBJ).forEach((キー、I) => { 場合(typeof演算 OBJ [キー] === 'オブジェクト' ){ constantize)(OBJ [キー]; } })。 }。
方法ES6は、変数を宣言6
VAR、機能、聞かせて、constの、インポート、クラス