JavaScriptでローカル変数と同じ名前のグローバル変数を呼び出す方法

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

JavaScriptの関数内でグローバル変数と同じ名前のローカル変数を宣言した時、その変数名を呼ぶとローカル変数のほうが呼ばれることになります。なので、ローカル変数と同じ名前のグローバル変数を関数内から呼べなくなると思うかもしれませんが、そもそもグローバル変数はwindowオブジェクトのプロパティとなっているので、実はwindowオブジェクトからメンバー演算子を利用することにより、ローカル変数と同じ名前のグローバル変数にアクセスすることができます。

最後のthis.hogeは、ここではwindow.hogeと同じになります。

ちなみに、『TestFunc()』ではなく、『new TestFunc()』とすると下記のようになります。

この場合のthisは『TestFunc』を継承して作られたオブジェクトになります。this.hogeとするとローカル変数のhogeを呼んでいるような気もしなくはないかもしれませんが、this.hogeとローカル変数のhogeは別物です。この場合、this.hogeは作成すらされていないので、『undefined』となります。たまに勘違いしちゃうので気をつけましょう(そんな勘違い、自分ぐらいかもしれませんが・・・)。

コメントを残す

メールアドレスが公開されることはありません。