クロージャーというものをあまり使ったことがなかったので学んでみました。
ここのページがわかりやすかったです。
私が今までクロージャを理解できなかった理由 - プログラミングを勉強するブログ
https://artgear.hatenablog.com/entry/20120115/1326635158
で、学んでみたところ理解できたつもりなのですが、
このクロージャーというもの(クロージャーパターン)は、
いわゆるベタ書きのJavaScriptなら、グローバル的な変数を内部に閉じ込めてプライベート化して
関数を外部公開する意味がありそうに思いますが、
現代的なJSで、CommonJSでもESModulesでもいいのですが、モジュール分割している書き方(モジュールパターン)の場合は、
内部のプライベート変数は外部に公開されないので、
クロージャーで閉じ込める書き方をする必要がないと思うのですが
そのような理解をしておいて大丈夫でしょうか?
参考ですがこんなコードを書いています。
https://github.com/standard-software/partsjs/blob/v7.4.0/source/syntax/canUseMap.js
let _canUseMapFlag; export const canUseMap = () => { if (isUndefined(_canUseMapFlag)) { try { new Map(); _canUseMapFlag = true; } catch (e) { _canUseMapFlag = false; } } return _canUseMapFlag; };
Mapが文法的にOKならtrue、を返す関数です。
超古い環境ではMapは使えない場合があるから、こんな関数を作ってみているのですが
これは簡単にクロージャー化できるのですが、クロージャー化する意味もないのではないかと思っているのです。
もっとクロージャーについて使い道がある、ということや、
あるいは、クロージャーはもういらないパターンだよ、
ということも知っていたり、ご意見いただけたら助かります。
よろしくお願いします。
追記
追加の例ですが
https://github.com/standard-software/partsjs/blob/v7.4.0/source/platform/platform.js
ここの、name とか、browserName も、呼び出すために毎回indexOfを何度もするよりかは、一度取得した後にキャッシュした値を次回から返す、というようにしようかなと思ったりです。
こういうパターンの場合はクロージャーパターンでも、モジュールパターンでも、あまり変わりなさそうな気がしました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 01:29
2020/08/31 02:32
2020/08/31 02:44
2020/08/31 03:52 編集