基本となる実行コードの段落を解析JS

!(()=> {
  Z = 9;
})()

はconsole.log(Z)。// 9

=>のvar宣言またはないようにしましょう機能の即時実行 

        => Z = 9; = 9グローバル宣言VAR zに対応する、直接割り当て=>可変リフトを表していません。

        =>出力Z => 9

 

(()=> {
    ここで、 yは9 = 
})()
console.log(Y)。// にReferenceError:yが定義されていません

直接すべて破棄宣言ローカル変数yを、割り当て9、その後は何の関係もなかった、; = 9 =>のvar yの機能の即時実行

        =>出力y =>何かを見つけることができません、直接のエラー:yが定義されていません

 

 

console.log(X)。// にReferenceError:xが定義されていません 
!(()=> {
    X = 9 
})()

出力のx =>何かを見つけることができません、直接のエラー:xが定義されていません

すぐに次の文の出力機能では、すぐ上の関数は、あなたがXを得ることができる場合、実行する機会、そして同じの上部はありません。

 

D = 10ましょう関数FOO(){
    console.log(D)。
}
!(()=> {
    聞かせてD = 9 ;
    FOO();
})()

// 10

 変数を定義するD(グローバル)

  関数fooを作成します。

=>変数D(部分)を定義する機能の即時実行

      => fooの関数への関数呼び出しは、グローバルDをD = 10を得るために見るように、上方の位置で行われます

      =>出力10

聞かせてD = 10 ;
!(() => {
    聞かせてD = 9 ;
    関数FOO(){
        console.log(D)。
    }
    FOO();
})()
// 9受信
 - ----- 
!(()=> {
    聞かせてD = 9 ;
    FOO();
})()
関数FOO(){
    console.log(D)。
} // dはされない定義
 - -------------------- 
D =ましょう10 関数FOO(D){
    console.log(D)。
}
!(() => {
    聞かせてD = 9 ;
    食物);
})()
//取得9

 

 

 

console.log(A); // アクセスする前に初期化'A'の初期化前に使用することはできませんすることはできません与えられた 
にconsole.log(B); // 宣言をBに定義されていないしていないB与えられた 
= A = C = Bのlet 8。;
 機能馬鹿(){ = B = C = 10 
}
console.log(A、B、C)。// 8 8 8 
馬鹿();
console.log(A、B、C)。// 8 10 10
LET A = B = C = 8。;
=> LETのA(グローバル)、右側のを待つが(B = C = 8)を計算する
=>のvar B(グローバル);(C = 8)を計算するのを待っている
=>変数C(グローバル)。 8 C割り当て、すなわち、C = 8、値は、式C = 8,8により得られた
=> 8 Bの割り当て、すなわち、B = 8、式の値を得るために、B = C = 8、8
=> 8割り当て、すなわち、A = 8;
したがって
(A、B、C)をCONSOLE.LOG ; // 8 8 8
呼び出しは(フール);
機能レーンA = B = C LET = 10;

=> LETのA(部分);右辺を計算するのを待っている(B = = 8 C)
=> Bがグローバル有し;ウェイト算出(= 8 C)
=>有するグローバルC、10 Cの再割り当て、即ち、C = 10、式C = 10、10により得られた値
=> B割り当て10、即ち、B = 10は、式の値を得るために、B = C = 10、10
=>(部分)割り当て10、すなわちA = 10。
したがって、最後
にconsole.log(A、B、C) ; // 8 10 10 ローカル変数およびグローバル変数は同じではありません
console.log(馬鹿)。// [機能:愚か者] 
のvar F = だまします。
VAR馬鹿= 13 ;
関数ばか(){
    console.log(馬鹿)。
    VAR:EN:フール= 4 ;
}
F(F = 8)。// 未定義 
にconsole.log(馬鹿)。// 13 
にconsole.log(F)。// 8 
馬鹿(F = 6)。// 例外TypeError:愚か者は関数ではありません

 プリコンパイルさは=>関数に等しいだまします

console.log(愚か者)=>関数の出力

VAR fは=だます;機能ポインティングF、変数fに割り当てられた機能をだまします

VaRの馬鹿= 13;フールの再文、および関数に、13もはやポイントが割り当てられていません

F(F = 8);呼び出し関数=> F = 8つの計算式

       => F値8、機能にもはやポイントを割り当てているが、関数が呼び出されているので、関数の実行を開始

       => 8の伝達関数には、任意の意味がありませんでした

       => CONSOLE.LOG(愚か者)は、外部、ローカルばか本体関数宣言するので、内のステートメントは再び使用後に、値を得ることができない、唯一の未定義を取得しないばか

console.log(愚か者); // 13
console.log(F); // 8。

バカ(F = 6); //例外TypeErrorは:この時点でIS A関数値をだますしないばか13であります

おすすめ

転載: www.cnblogs.com/jiayouba/p/11944562.html