目次
1. ES6 の概要
1. ES6のコンセプト
ESの正式名称はECMAScriptで、ECMA国際標準化機構が策定したスクリプト言語の標準仕様です。
ES6 は歴史的な用語であるだけでなく、一般的なリファレンスでもあり、ES2015、ES2016、ES2017 などを含む、バージョン 5.1 以降の JavaScript の次世代標準を意味しますが、ES2015 は正式名称であり、特に言語を指します。その年にリリースされた正式バージョンが標準です。
2. ES6 を使用する理由
それぞれの規格の誕生は言語の改良と機能の強化を意味します。JavaScript 言語自体にもいくつかの不満な点があります。
- 変数ホイスティング機能により、プログラム実行時の予測不可能性が高まります。
- 構文が緩すぎるため、同じ機能を実現するのに、異なる人が異なるコードを作成する可能性があります。
2、変数にしましょう
1.let はブロックレベルのスコープです
let str = "abc";
if(true){
let str="123";
console.log("if:",str);
}
console.log("全局:",str);
let で定義した値を if で使用した場合、出力は定義された値のまま、グローバルに定義された出力もグローバルに定義された値のままになります。同じ変数が定義されていますが、let はブロック要素として定義されているため、出力は価値観は互いに干渉しません。
2.letには変数プロモーションがありません
console.log(i);
let i=1;
Let は var のようにスコープ内の変数をプロモートしません。また、let で宣言された変数もプロモートされないため、構文エラーがスローされます。
3.「一時的なデッドゾーン」
var i=1;
if(true){
i=2;
let i=3;
}
ブロックレベルのスコープに let コマンドがある限り、宣言された変数はこの領域に「バインド」され、外部の影響を受けなくなります。
4. 重複したステートメントは許可されません
let a=1;
let a=3;
ブロック スコープで変数を繰り返し宣言すると、エラーが直接報告されます。
5. まとめ
-- let キーワードは、ブロックレベルの変数を宣言するために使用されます。
-- {} 宣言のスコープがブロックレベルであるのが特徴ですが、var 変数にはこの機能がありません。
-- ループ変数がグローバル変数をプログラミングできないようにします。
-- let キーワードには変数の巻き上げがありません。
-- let キーワードには、一時的なデッド ゾーンの特性があります。(使用前に宣言)
3、const変数
const には let とほとんど同じプロパティがあります。
1. const にはブロックスコープがあります
var a=1;
if(true){
const a=2;
console.log(a);
}
出力は 2 でなければなりません
2. const宣言定数を割り当てる必要があります
if(true){
const a;
console.log(a);
}
const 宣言に初期化子がない場合、直接エラーが報告されます。
3.定数の割り当ては変更できません
const person = {};
person.name ="张三";
person.age=18;
person = {};
オブジェクト自体は可変であるため、属性を追加できますが、アドレスは変更できず、定数変数が割り当てられます。
4. let、const、var の違い
- var で宣言された変数は、そのステートメントが配置されている関数内にスコープが設定され、変数の昇格という現象が発生します。
- let を使用して宣言された変数は、ステートメントが配置されているコード ブロックのスコープを持ち、変数の昇格はありません。
- const を使用して定数を宣言します。定数の値は、以降のコードで変更できません。
- let および const を使用して宣言された変数は、トップレベルのオブジェクトに属さず、未定義を返します。