最近の研究でのJS変数は何かを強化します

1つの可変リフト:

これは、変数var文で、その文は(改善されない変数の割り当てを強化するために、変数の宣言に注意してください)現在のスコープのトップに昇格されます

例として:

<SCRIPT> 
    にconsole.log(A)。// 未定義
    のvar A = 10 ;
    機能テスト(){ 
      にconsole.log(A)。// 未定義
      のvar A = 12 ; 
      console.log(A)。// 12 
    } 
    テスト(); 
    console.log(A)。// 10 
  </ SCRIPT>

上記のコードは、と等価です。

<スクリプト>
     VAR 
    console.log(A)。//は未定義 
    = 10 ;
    機能テスト(){
       VAR 
      console.log(A)。//は未定義 
      = 12 ; 
      console.log(A)。// 12 
    } 
    テスト(); 
    console.log(A)。// 10 
  </ SCRIPT>

2ましょうと宣言するのconst変数が増加するかどうかに関係なく?ましょうとconstがブロックレベルのスコープです

次の例でテスト:

<SCRIPT> 
    にconsole.log(A)。// 未定義
    のvar A = 10 ;
    機能テスト(){ 
      にconsole.log(A)。// 报错 
      = 12ましょう。// またはCONST A = 12。
      console.log(A)。// 12 
    } 
    テスト(); 
    console.log(A)。// 10 
  </ SCRIPT>
コードの表示

それは結論づけ:みましょうとのconst、可変リフトには適用されません。聞かせてのconstと「一時的なデッドゾーン」の概念と、それは最初から宣言された変数のスコープのこの部分にある、あなたは変数を使用することはできません、それ以外の場合はエラーになります。

ステートメント3機能改善:

 3つの方法で関数の宣言:

1つの関数の宣言:

機能テスト(){};

2関数式:

たテスト=関数(){}。

Functionコンストラクタを持つ3://以降の補助的なクラスに置き換えES6で

VARテスト=新しい機能();

関数宣言とコンストラクタが解除される場所:

次の例は示します。

<SCRIPT> 
   試験(); // 出力:関数宣言
    するvarテスト= 関数(){ 
      にconsole.log( "関数式" ); 
    } 
    テスト(); // 出力:機能発現
    機能テスト(){ 
      コンソール。 (ログ "機能宣言を" ); 
    } 
    テスト(); // 出力:関数式
    VARのテスト= 新しい新しいテスト(); 
    test.say(); // 出力:コンストラクタ
    機能テスト(){
       この ... SAY = 関数(){ 
        にconsole.log( "コンストラクタ" ); 
      } 
    }
</ SCRIPT>

4関数宣言は、変数宣言よりも高いです。

次のように:

<SCRIPT> 
    にconsole.log(試験); // 出力:テストƒ(){ 
    //    はconsole.log( "述べた機能"); 
    // } 
    機能テスト(){ 
      にconsole.log( "述べた機能" ); 
    } 
    VaRのテスト= 1; 
</ SCRIPT>

注意:個人記録は、間違った場所ならば、指摘してお待ちしております。

おすすめ

転載: www.cnblogs.com/Zxq-zn/p/11441435.html