🧱
JSでグローバル定数を作りたい
はじめに
JavaScriptではしばしばスコープに苦しめられる。let
、const
はブロックスコープでスコープを超えた参照ができない。今回、どうしてもグローバルな定数を定義したかったので、その解決策をメモる。
結論、Object.defineProperty()
を使うことで解決できた。
ほぼほぼ参考ページに書いてある通りに実装すれば問題なさそうだが、今回自分はグローバル定数が1つだけ欲しかったので、わざわざ関数には切り出さず擬似的にグローバル定数を作成した。
実装
global-const.js
<script>
// 擬似的にグローバル定数定義
Object.defineProperty(window, 'GLOBAL_CONST', {
value: 'global constant',
writable: false
});
</script>
Object.defineProperty()
の第一引数にwindow
オブジェクトを渡すことで、どこからでもGLOBAL_CONST
を参照できるというカラクリ。
どこで書き換えられるか分からないコードは怖いので、イミュータブルにできて安心。できれば、あまりスコープを超えたくないのですが。。。
参考ページ
Discussion