けど、そんな中で悩むことは、
・JavaScriptのlet、const、varの使い分けがわからならい
ですよね。
今回はそんなお悩みを解決する
・JavaScriptのlet、constとvarの違い
についてまとめます!
もくじ
JavaScriptで変数を宣言する方法
JavaScriptで変数を宣言する方法について説明をします。
varについて
varは関数スコープまたはグローバルスコープの変数宣言をおこないます。同時に値を初期化することができます。
let、constについて
JavaScriptの標準規格であるECMAScript2015で追加された宣言形式となります。
これまで使用されてきたvarはグローバルスコープの変数宣言でしたが、let、constはブロックスコープでの変数宣言ができることが特徴になります。
ブロックスコープとは処理の{}でくくる部分で、例えばIF文でしたらif(){<ブロックスコープはここ>}となります。
let、constとvarの違いは?
let、constとvarの違いはlet、constは{}内限定で利用できることに対して、varはどこでも有効であるということです。
例えばvarの場合のサンプルコードを実行してみましょう。
var value=1;
console.log(value);
if(true){
var value=2;
}
console.log(value);
結果です。
1
2
次はletにしてみましょう。
let value=1;
console.log(value);
if(true){
let value=2;
}
console.log(value);
結果です。
1
1
For文などで使えば他での干渉が防げるメリットがあるというわけです。
let、constは再宣言できない
let、constは再宣言できないことに対して、varは再宣言可能という違いもあります。
varは以下のように再宣言してもエラーとはなりませんが、
var value=1;
console.log(value);
var value=2;
console.log(value);
let、constは再宣言するとエラーとなります。
let value=1;
console.log(value);
let value=2;
console.log(value);
結果です。
Uncaught SyntaxError: Identifier 'value' has already been declared
基本的にconstは変数の再代入は不可
基本的にconstは変数の再代入は不可となっています。
constは定数と呼ばれ、変数の再代入は行われない前提となります。
const value=1;
console.log(value);
value=2;
console.log(value);
結果です。
Uncaught TypeError: Assignment to constant variable.
ただ、ブロックスコープの仕様がありますので、{}でくくればダブル宣言が可能です。
const value=1;
console.log(value);
if(true){
const value=2;
console.log(value);
}
結果です。
1
2
もうひとつ、constで配列や連想配列を操作する場合もエラーにはなりません。
const value=[1, 2];
console.log(value);
value.push(3);
console.log(value);
結果です。
[1, 2]
[1, 2, 3]
さいごに
いかがでしょうか。
今回は、
・JavaScriptのlet、constとvarの違い
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。