以下についてダラダラと書いています
- クロージャー ←とは何かについてはかいていない
- リヴィーリングモジュール
技術的なことはなんも書いてないです。ただの日記です。
こんげつは、
- 家政婦
- ピアノ
- 英語
- Flutter
- Python(pandas)
- Go
とかやっていて、どれも初学者レベルですが、いいの趣味だから!とか言い聞かせながら、本日もTypeScript再入門でちょっとクロージャーなんかを写経しました。
なんでそんなことをはじめたのか、ということをだらだら書いていたら、職場の愚痴みたくなってしまったので削除した。
業後に TypeScript Deep dive これをナナメよみしてて、(どの言語にもたいていあるとは思いますが)クロージャーってなんだっけ?となったので、Playground で写経しました。クロージャーもわからんのかい・・とか思われてもいいのです。過去に何度もおさらいしてるけど(先月もFlutterだかGoでやった気がする・・)、ふだん使わないのですぐ忘れる。
いい加減、恥を晒してブログに書けば、もー忘れまい・・と思って書きました。
typoもしている写経コード
function outerFunction(arg) {
var variableInOuterFunction = arg;
function bar() {
console.log(variableInOuterFunction);
}
bar();
}
outerFunction("Hello closure")
function outerFunction2(arg) {
var variableInOuterFunction = arg;
return function () {
console.log(variableInOuterFunction);
}
}
var innerFunction = outerFunction2("Hello clouser!!!");
innerFunction();
// revealing module pattern
function createCounter() {
let val = 0;
return {
increment() { val++ },
getVa() { return val }
}
}
let counter = createCounter();
counter.increment();
console.log(counter.getVa());
counter.increment();
console.log(counter.getVa());
counter.increment();
console.log(counter.getVa());
ふむふむ。プライベートな関数をオブジェクトにして、外から実行できるのね、とみた。
リヴィーリングモジュール
deep diveのクロージャーの節にでてきた言葉なのですが、
- 関数と変数をプライベートスコープ内で定義する
- パブリックメンバとして公開したいプライベートメンバへのポインタを持つ無名オブジェクトを返す
という、デザインパターンのうちのひとつみたい。