ブロックスコープ - JavaScriptの個人的なメモ(その7)
このメモについて
JavaScriptのメモを個人的にまとめておいたものです。誤りがあればご指摘ください。
with
JavaScriptには、ブロックスコープがありませんが、withを使えば、varやletを使わず、シンプルで美しいブロックスコープを書くことができます。
a = 15; with( { a: 0 }) { a = 12; /* この変数aは、上で設定されたプロパティなので、varをつける必要はない */ a; /* 12 */ }; a; /* 15のまま */
これでvarもletもコードから排除することができました。
グローバル変数をインポート
グローバル変数も次のように指定すれば、ローカル変数として扱えます。
with( { a: null, /*MathとDateとdocumentはグローバル変数*/ Math: Math, Date: Date, document: document }) { Math.sin(0); document = null; /* documentはローカルスコープなので問題が起きない */ };
結論
- ブロックスコープには関数やletのほかに、withを使う方法があります
- with方式はコードをシンプルに書くことができます