The Modern JavaScript Tutorial 1
最近フロントエンドを改めてしっかりと勉強し直したいと思い、フロントエンドのロードマップに沿って勉強をし直しています。
今はJavaScriptのSyntax and Basic Constructsの項目にあるThe Modern JavaScript Tutorialを読んでいるところです。
- WeakMapとWeakSet
- JavaScriptはオブジェクトがどのオブジェクトからも参照されていないと判断した場合にメモリから削除を行う
- Mapでキーにオブジェクトを使用すると、そのオブジェクトをnullで上書きして消そうとしても、Mapで使われている限りメモリに残り続ける
- WeakMapはキーのオブジェクトをnullで上書きすると、メモリから自動的に削除してくれる
- ただし、どのタイミングで削除するかはJavaScriptのエンジンが決める
- WeakMapはMapと異なりentries()、keys()、values()のメソッドをサポートしていない
- メモリに存在しているオブジェクトか本当に存在しているかがわからないため
- WeakMapのユースケースとしてはデータストレージや、キャッシュがある
- Object.keys、values、entries
- オブジェクトからキーや値、配列として取り出せたり変換できる
- 破壊的な割り当て
- 日本語だと分割代入でいいのかな?
- 配列でもオブジェクトでも分割代入が可能
- 展開元に値が存在しないときのためにデフォルト値が使用できる
- 明示的に変数名を指定して代入する以外に、残りのパターンを
...変数名
を使用して代入することもできる - オブジェクトを展開するときはデフォルトだとキー名が変数名となり代入されるが、別の変数名を指定して代入することも可能