こんにちは、直也です。
プログラミングの学習は捗っていますでしょうか?
さて、本題に入りたいと思います。
JavaScriptで変数および定数を宣言する際に見かけるvar,let,const。
var,let,constの違いについてよくわかっていない方も少なくないのでは、、、。と思い、今回はJavaScript var,let,constの違いについて具体例を交えながら分かりやすく説明していきます。
JavaScrptを学び始めた方や、var,let,constの違いについてよくわからない方は、ぜひお読みください。
目次
JavaScript var let constの違い
JavaScriptでは、変数および定数を使う際には、その変数および定数を「宣言」する必要があります。宣言は、その変数および定数の利用準備をすること、またその変数および定数の名前をつけることを指します。
実際に宣言するには、以下のvar,let,const キーワードを使用します。letとconstは、ECMAScript2015(※)から採用された、新しい宣言方法のキーワードです。
- ※ECMAScript2015(エクマスクリプト)とは、JavaScrptの標準仕様です。国際団体で標準化され、Google ChromeやInternet Explorer 11以降等、現代のブラウザで広く採用されています。
var キーワード
varは、variable(変数)の略です。再宣言、再代入が可能で、スコープの範囲は、関数内です。
【構文】
1 |
var 変数名 ... |
または、
1 |
var 変数名 = 値 ... |
【varの宣言(サンプル)】
1 2 |
var a, b; var num = 256; |
let キーワード
letは、単なる英単語の「let」で、数学において利用される「…をxとする」という意味です。再宣言が禁止されていて、スコープの範囲は、ブロック内です。
【構文】
1 |
let 変数名 ... |
または、
1 |
let 変数名 = 値 ... |
【letの宣言(サンプル)】
1 2 |
let a, b; let num = 256; |
const キーワード
constは、constant(定数)の略です。再宣言、再代入が禁止されていて、スコープの範囲は、ブロック内です。
【構文】
1 |
const 定数名 ... |
または、
1 |
const 定数名 = 値 ... |
【constの宣言(サンプル)】
1 2 |
const A, B; const TAX = 1.10; |
以上より、var,let,constの違いは以下の表のとおりとなります。
var | let | const | |
再代入 | ○ | ○ | × |
再宣言 | ○ | × | × |
スコープ | 関数 | ブロック | ブロック |
JavaScript var let const 再代入
宣言した変数に値を設定し直すことを再代入といいます。再代入可能なvar,letは値を再代入可能です。再代入不可能なconstで再代入した場合、エラーになります。
【サンプルコード】
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// var var a = 0; a = 1; console.log(a); // `1`と出力される // let let b = 0; b = 1; console.log(b); // `1`と出力される // const const c = 0; c = 1; // Assignment to constant variable. |
JavaScript var let const 再宣言
一度宣言した変数を、同じ変数名で宣言し直すことを再宣言といいます。再宣言可能なvarで再宣言した場合、再宣言時の変数が適用されます。再宣言不可能なlet,constで再宣言した場合、エラーになります。
【サンプルコード】
1 2 3 4 5 6 7 8 9 10 11 12 |
// var var a = 0; var a = 1; console.log(a); // `1`と出力される // let let b = 0; let b = 1; // SyntaxError: Identifier 'b' has already been declared. // const const c = 0; const c = 1; // SyntaxError: Identifier 'c' has already been declared. |
JavaScript var let constのスコープ
変数および定数には、参照することができる範囲が定められていて、それをスコープといいます。関数スコープは、関数宣言の{}の範囲です。ブロックスコープは、{}で囲われた部分(if文やfor文など)です。varは、関数スコープが適用されます。let,constは、関数スコープが適用されず、ブロックスコープが適用されます。
【サンプルコード】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// var { var a = 0; } console.log(a); // '0'と出力される(ブロックスコープが適用されないため、ブロック外でも値の参照が可能) // let { let b = 1; console.log(b); // '1'と出力される(ブロックスコープ内のため) } console.log(b); // b is not defined.(ブロック外のため未定義となる) // const { const c = 2; console.log(c); // '2'と出力される(ブロックスコープ内のため) } console.log(c); // c is not defined.(ブロック外のため未定義となる) |
まとめ
いかがでしたか?今回はJavaScript var let constの違いについて説明しました。
JavaScript var let constの違いについて理解いただけたでしょうか?量をこなしていくと簡単に使えることができる日が来ると思うので、焦らずにゆっくりと理解を深めていってくださいね。
この記事が、JavaScript変数および定数の宣言の学習に少しでも役立つと嬉しいです。