ホームページ >ウェブフロントエンド >jsチュートリアル >ES6アクション:Let and Const
let
const
の
let
const
ES6は、ブロックスコープされた変数と定数を定義する方法を提供し、JavaScriptの機能を強化し、潜在的なエラーを減らす方法を提供する2つの新しいキーワード
を導入します。 let
let
で宣言された変数は巻かれていません。つまり、ブロック内で宣言される前に参照することはできません。 const
const
Object.freeze()
キーワードは、再宣言できない定数を定義するために使用されます。 let
は不変の結合を作成しますが、価値自体を不変にしません。価値の不変性を達成するには、const
を使用する必要があります。
は、ノードおよびすべての最新のブラウザでサポートされています。 let
このチュートリアルでは、ES6のjavaScriptに追加された新しいキーワードである2つのキーワードをconst
と
この記事は、ES6で紹介された新しいJavaScriptに関する多くの記事の1つです。これには、Map
、WeakMap
、Set
、WeakSet
などがあり、String
、Number
、Array
新しい方法で利用可能です。関数に使用できる新しい構文。
let
ES5の前に、JavaScriptには関数スコープとグローバルスコープの2つのスコープしかありませんでした。これにより、C、C、Javaなどの他の言語の開発者に多くのフラストレーションと予期せぬ行動がもたらされます。 JavaScriptにはブロックスコープがありません。つまり、変数は定義するブロック内でのみアクセスできます。ブロックは、巻き毛の装具のすべてのものです。次の例を見てみましょう:
<code class="language-javascript">function foo() { var par = 1; if (par >= 0) { var bar = 2; console.log(par); // 输出 1 console.log(bar); // 输出 2 } console.log(par); // 输出 1 console.log(bar); // 输出 2 } foo();</code>このコードを実行した後、コンソールに次の出力が表示されます。
上記の言語のほとんどの開発者は、
<code>1 2 1 2</code>ブロックの外側で
変数にアクセスできないと予想しています。たとえば、cで等価コードを実行すると、if
ブロックの外側でbar
を使用することを指します。 bar
この状況は、ブロックスコープが可用性でES6で変化します。 ECMA組織のメンバーは、キーワードの動作を変更できないことを知っていますvar
そこで彼らは、let
という新しいキーワードを導入することにしました。後者を使用して変数を定義し、それらを宣言するブロックに範囲を制限します。さらに、var
とは異なり、let
を使用して宣言された変数は宣伝されません。変数のlet
宣言に遭遇する前に、ブロック内の変数を参照すると、ReferenceError
になります。しかし、これは実際にはどういう意味ですか?それは初心者にのみ良いですか?全くない!
let
が好きな理由を説明するには、次のコードを検討してください。私の記事「5 javascriptインタビューエクササイズ」から抜粋した:
<code class="language-javascript">function foo() { var par = 1; if (par >= 0) { var bar = 2; console.log(par); // 输出 1 console.log(bar); // 输出 2 } console.log(par); // 输出 1 console.log(bar); // 输出 2 } foo();</code>
ここでは、可変宣言、スコープ、イベントハンドラーに関連するよく知られている問題を特定できます。私が何について話しているのかわからない場合は、戻ってくる前に私が言及した記事をチェックしてください。
ES6のおかげで、この問題を簡単に解決できます。
for
let
i
ステートメントは、ノードおよびすべての最新のブラウザでサポートされています。ただし、Internet Explorer 11には、ES6互換性テーブルで読むことができることがいくつかあります。
<code>1 2 1 2</code>
とlet
の違いのリアルタイムデモを以下に示します。これはJSBINにもあります。
var
let
const
、開発者がニーモニックを特定の値に関連付けて、値を変更できないようにするための一般的な要求に対処します(または、より簡単に定義する)。たとえば、数式を使用している場合は、オブジェクトを作成することをお勧めします。このオブジェクトでは、πとEの値をニーモニックに関連付けます。
で定義された定義の定数は、変数と同じスコープルールに従いますが、再宣言することはできません。定数はまた、const
を使用して宣言された変数とプロパティを共有しています。つまり、機能スコープではなくブロックスコープされています(したがって、宣伝されていません)。宣言する前に定数にアクセスしようとすると、Math
を受け取ります。 const
で宣言された変数に別の値を割り当てようとすると、
const
ただし、let
は不変性とは何の関係もないことに注意してください。 Mathias Bynensが彼のブログ投稿でES2015 Constが不変性とは何の関係もないと言ったように、ReferenceError
は不変のバインディングを作成しますが、これは次のコードに示すように、値が不変であることを意味するものではありません。
const
TypeError
オブジェクトの値を本当に不変にしたい場合は、
const
のブラウザのサポートはlet
と同じくらい優れています。 const
ステートメントは、ノードおよびすべての最新のブラウザでサポートされています。ただし、ここでは、Internet Explorer 11にも注意すべきことがいくつかあり、ES6互換性テーブルの関連情報を読むことができます。
const
のサンプル使用量を以下に示します
<code class="language-javascript">function foo() { var par = 1; if (par >= 0) { var bar = 2; console.log(par); // 输出 1 console.log(bar); // 输出 2 } console.log(par); // 输出 1 console.log(bar); // 输出 2 } foo();</code>以下は、JSBINにもある前のコードのライブデモンストレーションを示しています。
結論 このチュートリアルでは、ES6で導入された変数を宣言する2つの新しい方法を
とを紹介しました。 let
はすぐには消えませんが、コードエラーの可能性を減らすために、可能な限りconst
およびvar
を使用することをお勧めします。さらに読むと、javaScriptの変数を宣言する方法を迅速なヒントが好きかもしれません。 const
ES6 let
、の違いは何ですか? let
JavaScript es6、const
、、および
var
およびlet
はブロックスコープされています。つまり、宣言するブロック内でのみ使用できます。再割り当てに関しては、const
およびで宣言できません。これにより、プログラム全体で変更されないようにする必要がある価値にvar
が非常に適しています。 let
const
コードでvar
とlet
をいつ使用する必要がありますか? const
var
ループ内のカウンターやアルゴリズムのバリュースワップなど、時間とともに変化する変数を宣言する必要がある場合は、let
を使用する必要があります。構成の設定やDOM要素への参照など、変更されないことが知られている値がある場合は、const
を使用する必要があります。 const
を使用すると、コードが読みやすくなり、理解しやすくなり、値を変更しないでください。
let
変数を再割り当てできますか? const
変数を再割り当てすることはできません。 let
変数が割り当てられると、再割り当てを試みるとconst
になります。ただし、const
変数がオブジェクトである場合、オブジェクトのプロパティを変更できますが、オブジェクト自体は変更できません。
const
変数の範囲は何ですか? 変数にはブロックスコープがあります。これは、定義するコードブロック内でのみアクセスできることを意味します。ブロックの外側にアクセスしようとすると、const
を受け取ります。 const
let
またはconst
を使用して変数を宣言するとどうなりますか? 初期化なしでlet
またはconst
を使用して変数を宣言すると、undefined
になります。ただし、var
とは異なり、それらを宣言する前にlet
またはconst
変数を使用することはできません。そうすることで、ReferenceError
になります。
let
またはconst
を使用して同じ名前の変数を宣言できますか? いいえ、同じ範囲内でlet
またはconst
を使用して同じ名前の変数を宣言することはできません。そうすることで、SyntaxError
になります。これは「時間的デッドゾーン」ルールと呼ばれます。
let
とconst
のコンテキストでは、プロモーションは何ですか? 標高は、コンパイルフェーズ中に変数と関数宣言が含まれるスコープの上部に移動されるJavaScriptのメカニズムです。ただし、var
とは異なり、let
およびconst
宣言は初期化されません。それらは昇進しますが、宣言の前にブロックの開始から宣言が処理されるまで「一時的なデッドゾーン」にあるため、宣言の前にアクセスすることはできません。
let
およびconst
を使用できますか? let
およびconst
は、ES6(ES2015)仕様の一部であり、すべての最新のブラウザでサポートされています。ただし、ES6をサポートしていない古いブラウザの場合、Babelなどの翻訳者を使用してES6コードをES5コードに変換する必要があります。
let
とconst
を使用することのパフォーマンスへの影響は何ですか? let
およびconst
を使用することのパフォーマンスへの影響は無視できます。 JavaScriptエンジンはこれらのキーワードのために最適化されるため、それらとvar
の間に大きなパフォーマンスの違いはありません。 let
、const
、およびvar
let
を使用するためのベストプラクティスは何ですか? const
JavaScript ES6でを使用するためのいくつかのベストプラクティスには、デフォルトでlet
を使用することが含まれます。これにより、コードがより予測可能で理解しやすくなります。また、常に範囲の最上部に変数を宣言して、利用可能な場所を明確にします。 const
以上がES6アクション:Let and Constの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。