js の閉包問題を学習していたとき、js 高度なプログラミングのコード例を入力して実験しましたが、結果は一貫性がなく、理解できませんでした。
このコードの結果は、それぞれの値が 10 である配列になるはずですが、ブラウザで実験した結果、返されるのは関数の配列であることがわかりました。
では、なぜ数値配列を返さないのでしょうか?
は関数の配列です。各関数には戻り値 i がありますが、この関数は実行されません。 本の 181 ページ、コードの下の最初の文を注意深く読んでください。
この関数は関数の配列を返します。
以前これを見たとき、10 個すべてを直接返す方が直感的だと感じました。よく考えてみると、返された関数の直後に () を追加すると、返される i は毎回通常のインデックス値になり、毎回即時実行関数を作成することと同じになり、期待した効果が得られません。
配列要素に関数を割り当てているだけであり、これらの関数を呼び出しているわけではないからです。
result は、要素が関数である配列です。
だからあなたはこの状況にいるのです
必要なものをすべて取得したい場合は 10、配列を反復処理して配列要素である関数を呼び出し、戻り値をログに記録するだけです
10
は関数の配列です。各関数には戻り値 i がありますが、この関数は実行されません。
本の 181 ページ、コードの下の最初の文を注意深く読んでください。
以前これを見たとき、10 個すべてを直接返す方が直感的だと感じました。よく考えてみると、返された関数の直後に () を追加すると、返される i は毎回通常のインデックス値になり、毎回即時実行関数を作成することと同じになり、期待した効果が得られません。
リーリー配列要素に関数を割り当てているだけであり、これらの関数を呼び出しているわけではないからです。
リーリーresult は、要素が関数である配列です。
だからあなたはこの状況にいるのです
必要なものをすべて取得したい場合は
リーリー10
、配列を反復処理して配列要素である関数を呼び出し、戻り値をログに記録するだけです