ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の var、let、const とは何ですか? var、let、constの使用法(コード)

JavaScript の var、let、const とは何ですか? var、let、constの使用法(コード)

青灯夜游
青灯夜游オリジナル
2018-09-18 15:47:181225ブラウズ

この章では、JavaScript における var、let、const とは何かについて説明します。 var、let、const (コード) の使用法。困っている友人は参考にしていただければ幸いです。

1、var

は、グローバル ウィンドウで宣言されたグローバル変数であり、グローバル オブジェクト ウィンドウの属性です。

var sum = 0
console.log(window.sum)  // 0
console.log(sum);        // 0

関数内で宣言された変数はローカル変数です

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );  // 3 之后是无限循环11
    }
    var  i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

このコードは次のように記述できます

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );
    }
    var i
    i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

関数は、変数を入力した後、プロモートされる前にプロモートされます。 for ループ、bar は関数のパラメータが 0 であるため、最初の出力は 3 として出力されます。フォーカスはここで i = 3 です。現在のスコープで i の宣言が検索されます。宣言がない場合は、それが検索されます。 foo でスコープチェーンに沿って検索します。見つかったので、foo の i は 3 になります。i を実行すると、i= 4 が得られ、bar を実行すると、次の 11 が得られます。これはループし続けます

2 、 let および const

は、ES6 で変数を宣言する 2 つの新しい方法です。同じスコープ内で同じ変数を繰り返し宣言することはできません。 変数の昇格がないため、変数が宣言される前にこの変数を使用することはできません。 var はプロモートされますが、値は未定義です。
#ES5 では関数のみがブロックレベルのスコープを持ちますが、ES6 では関数のスコープだけではありません。これは let と const

var b = 1;
{
    let b = 2;
}
console.log(b);  // 1
のおかげです。

中括弧はブロックレベルのスコープに相当します

var a = []
for(let i=0; i<10;i++){
    a[i] = function(){
        console.log(i);
    };
    console.log(i) //[function,function..]  总共10个
}
console.log(a)
a[8]()  // 8

ここの let を var に変更すると、すべての出力が 10 になることがわかります。

var で宣言された i は、実際にはグローバル変数であり、配列 a と同じレベルにあります。 for ループが i の値を変更するたびに、ループが終了すると元の値に基づいてコピーされます (i = 10)。したがって、どのように呼び出しても、出力は 10

The i になります。 let で宣言されたものは現在の This ブロック内でのみ有効です。サイクルごとにブロックがあるため、ループするたびに新しい変数 i が作成されます。cont と let の違いの 1 つは、定数の宣言に const が使用されることです。一度宣言すると、その値は変更できません。ただし、const が参照型の値を宣言している場合、

const a = {}
a.name = &#39;circle&#39;
console.log(a);   // Object {name: "circle"}

const はこのオブジェクトのアドレス値を格納するため、アドレス値が変更されないことのみを保証できますが、このオブジェクトの属性を変更することはできません。

以上がJavaScript の var、let、const とは何ですか? var、let、constの使用法(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。