明けましておめでとうございます。元日から、こちらの本でJavascriptの勉強をしています:
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/30
- メディア: 大型本
- この商品を含むブログを見る
本日は4.3章。変数を宣言するときに、var
があろうがなかろうが一緒かと思っていたのですが、全然違うことを知りました:
var language = 'Japanese'; function getLanguage() { var language = 'English'; return language; } console.log(getLanguage()); console.log(language);
と実行すると、
English Japanese
とコンソールに出力されますが、var
を取ると:
var language = 'Japanese'; function getLanguage() { language = 'English'; return language; } console.log(getLanguage()); console.log(language);
English English
になります。変数を宣言する際、var
を用いるとそのスコープは定義した場所(この場合は関数内)になりますが、
var
を省略するとグローバルスコープになります。
グローバル変数の意図しない参照・上書きによる不具合を防ぐためにも、
変数を宣言する際は必ずvar
を用いましょう、ということですね。
後日談
いまこの記事をみていて「自分で全然勉強不足だなぁ」と思うだけでなく、 varを割愛したらグローバルスコープの変数を参照するのは当たり前では?と思いました。 まだまだ全然ダメですね…