そして、VAR定義された変数の違いを聞かせて

可変リフト

変数varので、それ以外の場合はエラーになり、letの定義の変数の後に文で使用してください、強化、アップグレードおよび変数が存在しないようにする存在します。

ました

// VAR定義された変数は可変リフトは、変数宣言は、最前の全体的な範囲を高めるであろう存在
 // 例1 
にconsole.log(A);   // 未定義
するvar C = 10 ; 
 
// に相当
するvar C、
コンソール.logの(A);   // 未定義 
C = 10 ; 
 
/ * ------------------------ * / 
// 例2 
のvar A = 100 
FUNC関数(){ 
    にconsole.log(A); // 未定義
    するvar A = 10 ; 
    にconsole.log(A); // 10 
} 
FUNC(); // 関数を呼び出します
 
// 同等
のvar = A 100 
関数FUNC(){ 
    VARのA; 
    にconsole.log(A); // 未定義 
    A = 10 ; 
    にconsole.log(A); // 10 
} 
FUNC(); // 呼び出し関数
 
// 注意:
 // グローバル変数に相当宣言と直接割り当てずに変数のために、それが割り当て与えられる前に、割り当て後に使用することが可能 
にconsole.log(A); // エラー:Aが定義されていない 
= 100 
console.log(A); // 100

てみましょう

// 変数宣言が存在しない定義されたLETの変数は、エラーが変数宣言の前に使用される
 // 例1 
にconsole.log(A);   // エラーが定義されていない 
のlet A = 100 ; 
 
// 例2 
関数func(){ 
    console.log(A); 
    LETのA = 100 ; 
} 
FUNC(); // 関数を呼び出します

 

第二に、スコープ

VAR:のみ関数スコープとグローバルスコープの概念は、ブロックレベルのスコープの概念はありません。

てみましょう:のみ{}を含めて最大によると、{}内の文のIF文のためのブロックレベルのスコープの概念はブロックレベルのスコープを属します。

ました

// グローバルスコープの例
 // 関数定義の内部変数に追加され、他はグローバル変数です。
VAR I = 0 ;私は< 100 ; Iは++ ){ 
    ; 
} 
にconsole.log(I); // 100 
 
// 例の機能の範囲は、以下の出力B 10、 "Aが定義されていない"とは、所与のながら、なぜ?
// 変数(b)は、グローバル変数と同等の割り当てを、宣言し、直接的ではないのでします。
// 関数中の変数については(a)の代入文は、関数はエラーを回避するために、外部アクセス不可能、内部でのみ有効であり、
    
関数funcを(){ 
    B = 10 ;
     VAR A = 100 ;         
} 
FUNC(); // 関数は、呼び出し 
はconsole.log(B)を;   //   10 
にconsole.log(A)。  // 报错aが定義されていません。
/ * の知識塗りつぶし
    機能の構文:定義された関数から呼び出して関数を呼び出す
    (関数(){ 
            
    })(); 
* / 
// として試験
(関数(){
     VARの A = B = 100 ;             
} )(); 
はconsole.log(B); 
はconsole.log(A); 
 
// 問題:それぞれAとBの、何の出力も?
 
 
// 回答:B出力100を、「定義されていない」与えながら
 
// なぜ?
 
// まず、関数は馴染みの表現に分解される
(関数(){
     VAR A = 100 
    B = 100 ;             
})(); 
にconsole.log(B); //   100 
にconsole.log(A)。//定義されたエラーではありません; 
 
// その結果、それは見ることができ、右?グローバル変数に対応するB、および内側のみではなく、外部からのアクセスに基づいて行動するための機能:これは、前述の「スコープ機能」です。

てみましょう

限りコマンドせてブロックレベルの余地があるように、変数が宣言され、それだろう外部の影響を受けなくなった「バインド」この分野で(結合)。コードブロックでは、変数を宣言する前に、letコマンドを使用して、変数がこれは文法的に「一時的な死」として知られ、使用できません。

// 例1
 // 前のコードブロックは、変数を宣言せて使用する場合、変数が利用できないので、それ以外の場合はエラー、「Aが定義されていない」与えられる
場合trueに){ 
    A = 123 ; 
    せてA ; 
} 
 
// 例2
 // のみ有効ループ本体のための私を聞かせて使用して定義されるように、 "私は定義されていません"与えられている
ため(iは=せ1。 ; I < 100 ; iは++ ){ 
    ; 
} 
にconsole.logを(I )
 

 

 

第三に、繰り返し声明


VAR:変数が複数回宣言することができます

てみましょう:変数は、ステートメントを繰り返すことは許されない、同じスコープ内で許可されないようにしましょう、文は同じ変数を繰り返しました。関数内で再宣言と同じパラメータにはできません

ました

VaRの A = 10 ; 
関数func(){ 
    にconsole.log(A); // 未定義
    するvar A = 11 ; 
    にconsole.log(A); // 11 
} 
FUNC(); 
にconsole.log(A); // 10 
VaRのA; 
にconsole.log(A); // 10 
VAR A = 12であり; 
はconsole.logは(A); // 12である
 
// この事実は、変数var変数宣言および反復リフトに関連している
 // 実際上記でき相当
するvar A; 
A = 10 ; 
関数func(){ 
    VAR A。
    console.log(A); //は不定 
    =を11。; 
    にconsole.log(A); // 11 
} 
FUNC(); 
にconsole.log(A); // 10 
 
にconsole.log(A); // 10 
A = 12 ; 
にconsole.log(A); // 12 
 
// このように、我々は正しい答えに到達することは容易であると信じています

てみましょう

// 例1
 // 「識別子『』既に宣言されている」与えられる
するvar A = 1 ;  = 2 ; 
 
// 例2
 // 異なるスコープを宣言することができるので、与えられていません。
= LET ' ハロー' ; 
{ 
    LET Aが = ' ハイ' ; 
    にconsole.log(A); // ハイ
} 
にconsole.log(A); // ハロー
 
// 例3は、
 // 「識別子与えられる''を有しますすでに定義されている変数varのアップグレードとして発生します、「宣言されて。
= LET ' こんにちは' ; 
{
    VAR A = ハイ; 
    にconsole.log(A); 
} 
にconsole.log(A); 
 
// 例4
 // 「識別子『A』は既に宣言された」与えられる
 // 同じ内部関数宣言が重複しませんデフォルトのパラメータ変数が宣言されるパラメータは、それが再びせ又は使用のconst宣言することができない
関数func(a)は{  = こんにちは; 
    にconsole.log(A); 
} 
FUNC(ハイ);

 

https://blog.csdn.net/qq_41638795/article/details/81318704転載

 

おすすめ

転載: www.cnblogs.com/Tanghongchang/p/11007108.html