問題タブ [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.

0 投票する
4 に答える
127 参照

javascript - JavaScript の巻き上げと実行コンテキストを理解する

「ホイスト」という用語について読んだことがありますが、よくわかりません。変数が未定義に設定されているときに関数が実行されるのはなぜですか?

興味深いのは、変数にエラーが表示されなかったことです。しかし、それは未定義を示しました。しかし、変数を完全に削除すると、エラーが表示されます。つまり、変数はどこかに存在します。右?

しかし、それが存在する場合、なぜコンパイラはそれをコンパイルできず、ここで関数をコンパイルできないのでしょうか?

var a が巻き上げられていることはわかっています。エンジンが変数と関数を別の方法で処理している理由、つまり実行コンテキスト中に舞台裏で起こっていることを知りたいです。

エンジンが実行コンテキストを作成する方法についての詳細な説明は役に立ちます。

この質問では、javascript エンジンが関数と変数でどのように異なる動作をするかについて質問しています。そして、実行フェーズの作成状態と実行状態で正確に何が起こっているのか。したがって、重複した質問ではありません。

0 投票する
5 に答える
431 参照

javascript - Javascript 巻き上げ

私はjavascript巻き上げ機能を学んでいますが、次のコードは本当に混乱しています:

出力は1です。私の知る限り、 のため、hoisting上記のコードは

functionaと avariableが同じ名前の場合はどうなりaますか?

0 投票する
1 に答える
107 参照

javascript - ノードjsで関数式の場所が問題にならないのはなぜですか?

JavaScript では、関数式 ( などvar myFunc = function() {...}) を使用する場合、他の変数宣言と同様に、使用するに変数を定義する必要があります。たとえば、次の例は機能しません(結果は になりUncaught TypeError: myFunc is not a functionます)。

ただし、ノードjsプロジェクトのroutes/index.jsファイルには、次のコードがあります(明らかに省略されています):

myFunc変数は使用後に宣言されるので、これはエラーをスローするべきではありませんか?

0 投票する
2 に答える
933 参照

javascript - if文と変数の巻き上げ

JavaScript での変数ホイストについて学んでいますが、この動作が奇妙であることがわかりました。

この場合、ステートメントは条件を真にして実行できるというのは正しいですか?

0 投票する
1 に答える
2526 参照

javascript - Select form item has undefined value

I have read a little about hoisting, but I am not sure how it applies in this situation. I have a select value that is shown and hidden dynamically and the value of this select element is always undefined. Please help! Thanks

HTML

Javascript:

No need for the file the AJAX is calling. It simply POST's the 'rules'. As far as I can tell this is a javascript hoisting problem, but I don't know why. Thanks

0 投票する
2 に答える
372 参照

javascript - javascript巻き上げvar vs let

私はいくつかのES6機能を学んでおり、もちろん、letキーワードとその新しいスコープ ( とは異なりますvar) に出くわし、トリッキーなスコープvarとその巻き上げに関する例に出くわしました。しかし、なぜこの結果が得られるのか完全には理解できません:

var eventループの外側に巻き上げられていることは理解してforいますが、ループの反復ごとに配列内の最後のイベント (「keyup」) を取得するのはなぜですか?
関数はaddEventListener非同期で、イベントをアタッチするまでにイベントの値が変化しますか?

0 投票する
4 に答える
148 参照

javascript - 自己実行関数の Javascript 巻き上げ

このコードがコメント付きの出力を生成する方法を誰か説明してもらえますか?

0 投票する
0 に答える
49 参照

javascript - JavaScript 巻き上げがこのように動作するのはなぜですか?

吊り上げの理由がわかりません。

JavaScript の巻き上げにより、a の値として未定義になっています。すべての宣言を先頭に置くことの背後にある特定の理由。

0 投票する
2 に答える
702 参照

swift - スイフトホイスト?

誰もが知っているように、JavaScript は変数をファイルまたはスコープの先頭に「ホイスト」します。しかし、私の理解では、使用は、それが定義されているスコープに限定されているだけとlet同じです。varlet

インタープリターではなくコンパイルされた言語であるため、Swift はこれを行わないと仮定できますか?

例えば:

0 投票する
3 に答える
72 参照

javascript - 変数が宣言される前に使用されている場合、ReferenceError がスローされないのはなぜですか?

JavaScript でスローされた参照エラーの動作に頭を悩ませようとしています。

次の例でReferenceErrorは、2 行目で a がスローされ、実行が中断されます。

この例では、コードは正常に完了しますが、obj.func1残りは次のundefinedとおりです。

私の仮定では、2 行目で同じようにエラーがスローされると想定していました。そうでない場合は、obj.func1を適切に参照することを期待してfunc2いましたが、二重のブラインドサイドでした。では、ここで何が起こっているのでしょうか。