JavaScriptへの理解が古いので、再度勉強してます。
今回は変数の宣言について
昔のJavaScriptではvarで変数を定義してましたが、これはモダンでないらしい。
なぜなら、“var”はブロックスコープを持たないからだそうです。
例えば、
if(true){ var test = "test"; } console.log(test); //動く
というコードで、ifの閉じ括弧がきた時に変数の寿命が来ると思いきや、来ない… 閉じ括弧後のconsole.logが動いてしまいます。
function test(){ var test = "test"; } test(); console.log(test); //動かない
このように変数ブロック内にある場合は変数の外では動かないけど、ifやforのようなコードブロックは外から見えてしまいます。
そこで let を使います。
letはブロックスコープを持つので、C++などの言語と同じ感覚で変数の寿命をコントロールできます。
if(true){ let test = "test"; } console.log(test); //動かない
letの他にもconstを使用できます。
constはC++のconstと同じように一度定義された後は、変更しようとした際にエラーを出します。またletと同じようにブロックスコープは動きます。
const test = "test"; test = "hello world!"; //エラー!
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
山田 祥寛
3,278円(11/23 01:03時点)
発売日: 2016/09/30
Amazonの情報を掲載しています
コメント