詳細な可変リフトフロントエンド

非厳密モードでは、JavaScriptの機能を強化するための変数があります。

1.原因

JavaScriptの作品は最初にコンパイルして、コンパイル時に実行され、インタプリタが全て譲渡または他のロジックの範囲とは、所定の位置に残る一番上に「移動」、これは可変リフトで宣言します。

例えば

FOO();
関数FOO(){ 
  にconsole.log(A)。//未定義
  のvar A = 2 ;  
}

コンパイルはフォームであることが理解された後

関数FOO(){
   VAR 
  console.log(A)。// 未定義 
  A = 2 ;  
} 
のfoo();

2.優先機能

昇格プロセスでは、関数の宣言は、最初に、その後、変数になります強化します。唯一の関数宣言が解除され、関数式(VARのA =関数b(){})を改善しないであろう((){}機能します)。同じ文が存在する場合は、同じ変数の宣言は無視されます。同じ関数宣言が、後者は以前に上書きされます。

例えば

FOO(); // 1 
のvar fooという。
関数FOO(){ 
  にconsole.log( 1 )。
} 
FOO = 関数(){ 
  にconsole.log( 2 )。
}

理解されるべきで

関数FOO(){ 
  にconsole.log( 1 )。
} 
のfoo(); // 1つの 
FOO = 関数(){ 
  にconsole.log( 2 )。
}

 

おすすめ

転載: www.cnblogs.com/diyichen/p/11183873.html