2016年02月28日

【JavaScript】擬似的にブロックスコープを実装してみる

JavaScriptの変数定義の仕様上、「変数の意図しない競合を防ぐ」と言う事は、案外需要の高いトピックかもしれませぬ。
※ES6になればletが使えるので、万事解決なんですけどw


と言うわけで、擬似的にブロックスコープを定義するサンプルをご紹介します。


with ({b:0}) {
    if (true) {
        b = 5;
    }
}

alert(b); // 変数bはスコープ外なのでエラーとなる




まぁ、相当トリッキーというか、微妙な記述ですなんけど、こんな感じで無理やり実現する事が可能です。

with命令を使って、withブロック内でのみ参照可能な変数(実際には無名/匿名オブジェクトのプロパティ)を定義しています。


あんまり頻繁に使うのもアレですけど、どうしてもブロックスコープを使わなきゃならないような場合にお試しくださいませ。





ウサコのLINEすたんぷ好評配信中!

https://store.line.me/stickershop/product/1014321/ja

posted by kinky-do at 23:05| JavaScript