質問: javascriptクロジャはどこのように機能しますか? javascriptのクロージャを構成する概念(たとえば、関数、変数など)についての知識を持っている人にjavascriptクロージャをどのように説明しますか。しかし、クロージャ自体は理解していません。 schemeの例 をウィキペディアで見たことがありますが、残念ながら役に立ちませんでした。
回答: クロージャは、誰もが直感的にとにかく動作することを期待している動作を動作させるために使用されるため、説明するのは困難です。私はそれらを説明する最良の方法を見つけます(そしてiが彼らが何をするかを学んだ方法)はそれらなしで状況を想像することです: var bind = function(x) { return function(y) { return x + y; }; } var plus5 = bind(5); console.log(plus5(3)); javascript did n'tクロージャを知っている場合、ここで何が起こるでしょうか?最後の行の呼び出しをメソッド本体で置き換えるだけで(これは基本的に関数呼び出しの機能です)、次のようになります:console.log(x + 3); さて、xの定義はどこですか?現在のスコープでは定義していません。唯一の解決策は、plus5 carryのスコープ(または、その親のスコープ)を使用することです。このように、xは明確に定義されており、値5にバインドされています。