ES6のletコマンドとconstコマンドの詳細な説明

高洛峰
リリース: 2016-12-29 13:20:21
オリジナル
1185 人が閲覧しました

let と const で宣言された変数はコード ブロック内でのみ有効です

{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
ログイン後にコピー

変数の昇格はありません

変数は宣言後に使用する必要があります。そうでないとエラーが報告されます

var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
ログイン後にコピー

重複した宣言は許可されません

// 报错
function () {
let a = 10;
var a = 1;
}
ログイン後にコピー

ブロックレベルのスコープ

function f() { console.log('I am outside!'); }
(function () {
if(false) {
// 重复声明一次函数f
function f() { console.log('I am inside!'); }
}
f();
}());
//I am inside! ES5 函数提升
//I am outside! ES6 块级作用域
ログイン後にコピー

constコマンド

一度宣言されると、定数の値は変更できません

。宣言された場合は、すぐに初期化する必要があり、将来

let コマンド、const コマンド、class コマンドで宣言されたグローバル変数はグローバル オブジェクトの属性ではありません

var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined
ログイン後にコピー

次に紹介しますES6 の const コマンドは別途必要です

これは常に ecma に基づいています。 js には定数の概念がありませんでしたが、es6 はこの欠陥を補いました

上記の例は、基本的な定数を宣言しています。初期値を変更しようとすると、エラーが報告されます。参照型の値の場合も同様ですが、次のような点に注意する必要があります。

普通にエラーを報告します。何も問題はありません。もう一度見てください:

const foo='foo';
foo='bar';//TypeError: Assignment to constant variable.
ログイン後にコピー

どうしてエラーが報告されないのでしょうか?そして改造は成功するのでしょうか? これら 2 つの例の違いは、前者ではポインターが変更され (js 参照型に精通している必要があります)、対応するコンテンツが変更されているのに対し、後者では同じものを指していませんが、オブジェクトのコンテンツが変更されていることです。 foo の場合、ポインタは対応するオブジェクトを指すだけです。オブジェクトの内容は関係ないため、内容を変更したくない場合は、別のメソッドを使用できます。

const foo=[];  
foo=[1];//Assignment to constant variable.
ログイン後にコピー

この方法では、変更されることを心配する必要はありません。

ES6 の let および const コマンドに関する詳細な記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート