問題タブ [lexical-closures]

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 に答える
84 参照

javascript - これらのブロックの JS スコープはどのように機能しますか?

以下が 1,2 を生成し、もう一方が 5 を生成する理由を誰か説明できますか? 両方とも 5 を生成するべきではありませんか?

JS クロージャーに関するいくつかの記事を読んだことに基づいて、両方とも 5 を生成することを期待しています。

ありがとう!

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

javascript - JavaScript での再帰的クロージャー

ここに画像の説明を入力

Chrome でコンソールを見ると、最初に関数を持つクロージャーがあり、それ自体もクロージャーがあります。つまり、クロージャーに独自の関数の繰り返しループがあります。ここで何が起こっているのか知っている人はいますか?私は非常に混乱しています。無限閉鎖ループ

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

javascript - 関数がクロージャ JavaScript でどのように呼び出されたかを特定する

最近、乗算演算を計算し、答えを返さなければならない hackerrank で 1 つの問題に直面しました。例えば

ここで、関数がさまざまな方法で呼び出す可能性のある問題を次に示します。

2番目のmultiply(4)(5)のアプローチを閉じる必要があることはわかっています。私はそのためのコードを書いていました

次に、乗算関数が 3 つの引数multiply(4)(5)(6) で呼び出されたとします。関数がどのように呼び出されたかを特定する方法と、すべての入力に対して共通のソリューションを作成する方法を教えてください。

どんな助けでも大歓迎です。ありがとう

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

scheme - Scheme let ブロックでグローバルに定義された関数を一時的に上書きしますか?

次の機能があるとします。

gの で一時的に呼び出したい。たとえば、次のようなものです。 f

上記のコードを 7 に評価したいのですが、そうではありません。代わりに、のスコープgで を呼び出すため、 6 と評価されます。f let

gの内部で再定義せletずに、また の定義の本体全体をインライン化せずにこれを行う方法はありgますletか? (実際にgは、非常に大きく複雑な関数になる場合があります)。