JavaScriptの関数宣言を昇格させると、関数本体も一緒に昇格するのでしょうか?
PHP中文网
PHP中文网 2017-05-19 10:43:15
0
10
702

javascript 関数宣言のプロモーション、関数本体も一緒にプロモーションされますか?

でない場合、次の反例があります:

リーリー

の場合、次の反例があります:

リーリー

最初の例は、関数本体もプロモートされることを示しています。この考え方に従って 2 番目のコードを理解すると、「名前変更」関数が相互にカバーし、後の関数が前の関数をカバーすることになります。 console.log( func) は文字列「function func() {console.log('22');};」を出力しますが、実際にはそうではありません。

3 つの疑問が生じます:

  1. 「変数のプロモーション、機能の優先順位」をどのように理解していますか?

  2. 関数本体も改良されているのでしょうか?

  3. 2 番目のコードの実行結果を解釈するにはどうすればよいですか?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(10)
PHPzhong

私が書いた記事を読めばすべてが理解でき、JavaScriptの実行コンテキスト、関数スタック、プロモーションの概念を深く理解できると思います

いいねを押す +0
習慣沉默

if は条件判定を表します。コンパイル中にコードは実行されず、構文と字句解析のみがチェックされます。ブラウザを変更してみたり、テスト用に厳密モードを有効にしてみると、予期せぬことが起こる可能性があります~

1. 変数の昇格、関数の優先順位、つまり var a = 1; function fun(){}; および function fun(){} がスコープの最上位に昇格されます。
2.も改善されました。関数式は var fun = function(){}; なので、そうではありません。この種の関数は var fun のみを改善します
3. 2 番目の段落は、実際には次のように説明できます

リーリー
いいねを押す +0
Peter_Zhu

詳しい紹介については、MDN http://kangax.github.io/nfe/#...を参照してください。

いいねを押す +0
某草草

非厳密モードでは、if ステートメント内に配置された関数宣言がプロモートされるかどうかは、各カーネルの実装によって異なります。

結論としては機能は改善されますが、if文内での各コアの実装に依存します。

厳密モードでは、スクリプトまたは関数レベルではない関数宣言が禁止されます

いいねを押す +0
左手右手慢动作

次を参照してください: /q/10...

いいねを押す +0
洪涛

関数と変数の宣言はプロモートされます。関数のプロモートは変数のプロモートよりも優先されます。最初のコードは直接改良されています。 2 番目のコードで定義した関数は、if ステートメント構造内にあります。2 つのログと if は、実行中のスタックで順番に実行される必要があります。明らかに、関数は if ステートメントが実行される前に宣言されていません。

いいねを押す +0
刘奇

es6 にはブロックレベルのスコープ ルールがいくつかあり、古いバージョンのノードまたは以前のバージョンの Chrome で実行すると、次のコードと同等になります
。 リーリー

ただし、node と chrome のバージョンが高くなると、そのような変数の改善が制限され、コード内でこのような状況が発生します。 ~! ~

いいねを押す +0
仅有的幸福

JavaScript は関数レベルのスコープであるため (function-level scope
所以if中并没有独立维护一个scope

)

英語の説明:
javascript-variable-scope-and-hoisting-explained
中国語の説明: Javascript スコープと変数ホイスティング

いいねを押す +0
洪涛

一般に、条件ステートメントで関数宣言を記述することは推奨されません。
これは ECMAScript の無効な構文であり、JavaScript エンジンはエラーを修正し、通常の適切な状態に変換しようとします。ただし、この修正方法はブラウザごとに異なります。関数式を使用することをお勧めします:
var func;
if(true){

リーリー

}その他{

リーリー

}

いいねを押す +0
phpcn_u1582

http://blog.csdn.net/qq673318...
リンクには説明があります
————ポーター

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート