実現したいこと
JavaScriptで関数を返す関数を作りたいのですが、そのとき返された関数間で参照する変数を共有させたいです。
JavaScript
1const factory = function(x) { 2 const heavyData = 大きめのデータ; 3 if (x) { 4 return function() { 5 //heavyDataを使った処理 6 } 7 } else { 8 return function() { 9 //heavyDataを使った別の処理 10 } 11 } 12}
このように関数を返す関数factoryがあって、
JavaScript
1const func1 = factory(true); 2const func2 = factory(false); 3func1(); 4func2();
のようにして関数func1とfunc2を作って実行したとき、各クロージャが参照する変数heavyDataは互いに別(独立?)になりますよね?
大きめのデータが文字通り大きめのデータなので、メモリのために同じheavyDataを参照するようにしたいです。
また、heavyDataをグローバルに置くのは避けたいです。
どのようにすれば実現できるでしょうか。
回答2件
あなたの回答
tips
プレビュー