問題タブ [hoisting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 変数ホイスト - 関数内のグローバル変数名を持つ「var」
私はいくつかのシナリオを練習していて、ケースを見つけました:
クロージャーバー関数によるとvar x
、アラート1と条件がfalseになると予想していましif(!1)
たが、アラートが発生しundefined
、条件がtrueになり、2番目のアラートの値は10になります。
では、なぜ未定義のプロンプトが表示されるのか混乱していますか?
特定のスコープでの巻き上げによれば、常に最上位で定義されていると見なされる場所に変数を定義します。
巻き上げ効果が原因である場合でも、未定義の代わりに 10 を警告する必要があります。
javascript - 可変巻き上げの問題の可能性
このJSを検討してください(これは最後に実行され、body
エラーを引き起こします)
次に、コンマを削除してvar
キーワードを追加しましたが、同様のエラーを受け取りました ( HTML ではありません):
それが機能する唯一の方法は、割り当てalert()
の直後にステートメントを追加することです。div
これは変数巻き上げに関連していると思いますが、確実に知るには十分な経験がありません。
誰かが変数巻き上げの簡単な概要と、ここで何が起こっているのか教えてもらえますか? ありがとう!
javascript - 関数の巻き上げと return 文
この(例のために縮小された)関数が問題なく実行されることを期待しますが、次の理由で失敗しますfn2 is not defined
:
fn2
return ステートメントは、関数式 forをホイストからどのように除外しますか?
javascript - node.js で underscore.js をチェーンすると、「無効な REPL キーワード」がスローされる
私はアンダースコア/ノードの使用に不慣れで、連鎖関数の概念を理解しようとしています。ただし、ノードで関数をチェーンしようとすると、適切な出力を引き出すことができません。アンダースコアの連鎖セクションからスニップの例を取得すると、「無効な REPL キーワード」が生成されます。
この場合、私はASIの被害者ですか? その場合、「;」はどこにありますか 挿入しようとしていますか?このスニペットを JSHint にプラグインしてもエラーが発生しないため、混乱しています。エラーを特定するのを手伝ってもらえますか?
ありがとう!
javascript - JavaScript の内部関数は巻き上げられますか? スコープ規則はそれらにどのように適用されますか?
JavaScript にはブロック スコープではなく関数スコープがあり、宣言はブロックから親関数の先頭に引き上げられると思いました。
ただし、次のコードは期待どおりに機能しません。
最初のone(1);
呼び出しはエラーなしで正常に処理されますが、2 番目の呼び出しで実行が停止しone(2);
ます。
この動作は直感的です。関数inner
は の場合にのみ定義されa==1
ます。
しかし、スコープ/ホイスト ルールとどのように整合性があるのでしょうか?
if
その定義は、効果がないはずのブロックの外で、そのスコープの一番上に引き上げられると思いました!
編集:ここに私が得ているエラーがあります:
ブラウザは Firefox です。ここでフィドル。