はじめに
jsの宣言方法でES5以前まではvarが使われてたようだが、ES6になりlet, constができてから、varは非推奨となった。
varが非推奨となった理由をざっくりまとめる。
var とは何か
変数宣言の方法の一つ。
jsでの変数宣言は3種類が存在する。
- var
- let
- const
宣言方法による違い
var | let | const | |
---|---|---|---|
再定義 | 可 | 不可 | 不可 |
再代入 | 可 | 可 | 可 |
スコープ | グローバルスコープ | スクリプトスコープ ローカルスコープ |
スクリプトスコープ ローカルスコープ |
宣言の巻上げ | 初期化される | 初期化されない | 初期化されない |
var非推奨の理由
- スコープが常にグローバルスコープとなるため
- レキシカルスコープを利用した書き方ができない
- どこからでも同じ変数を再定義、再代入されてしまうことで、バグを生み出しやすい
- 宣言の巻上げ時にundefinedで初期化されてしまうため
- どこからでも同じ変数名で再定義が可能なことで、ソース内の複数個所で初期化が行われた際に、値がundefinedになりバグを生み出しやすい
所感
基本的にグローバルで変数を持ち続けるかつ、定義、再定義が自由だとバグを生み出しやすいんだなあと思った。言語によって制限されてることで皆が使いやすくなっている。