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>
注意:個人記録は、間違った場所ならば、指摘してお待ちしております。