0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptの変数宣言について

Last updated at Posted at 2022-02-07

【JavaScript】変数の宣言(var, let, const)

変数宣言

プログラミング言語には、文字列や数値などのデータに名前をつけることで、繰り返し利用できるようにする変数という機能があります。
JavaScriptには「これは変数です」という宣言をするキーワードとして、 const、let、varの3つがあります。
varはもっとも古くからある変数宣言のキーワードですが、意図しない動作を作りやすい問題が知られています。 そのためECMAScript 2015で、varの問題を改善するためにconstとletという新しいキーワードが導入されました。

ES2015(ES6)とは

ECMASCriptの6th Editionのこと。ECMAScript 6th editionの6を取ってES6と呼ばれていたが、
2015年に標準化されたため正式名称はES2015になった。ここでconstとletが追加されるようになった経緯があった。

varとletとconst

JavaScriptでは変数の宣言は従来よりvarが使われていたが、ES2015よりletが追加されました。また、同じくES2015よりconstを用いた定数の宣言も可能になった。ECMAScript 2015では、varそのものを改善するのではなく、新しくconstとletというキーワードを追加することで、varの問題を回避できるようにしました。var自体の動作を変更しなかったのは、後方互換性のためです。

varでの変数宣言

sample.js
var food = 1; 
    food = 2;
console.log(food); //2がコンソールに出力される。

1行目において変数は省略されているが、varで宣言されたとみなされている。省略した場合はグローバルな変数(どこにあるコードからでも同じように値の読み取りや書き換えが可能なもの。)になるため避ける。

letでの変数宣言

let food = 'soft'; 
console.log(food); // => foodがコンソールに表示される。


food = 'Soft'; // 再代入する
console.log(food); // => Softが表示される。

let food = 'Soft'; // 再宣言するとエラーになる

letキーワードでは、値の再代入が可能な変数を宣言できます。 letの使い方はconstとほとんど同じです。
次のコードでは、foodという変数を宣言し、初期値を"JavaScript soft"という文字列であることを定義しています。

constでの変数宣言

const food = 'Soft';
console.log(food); // => Softがコンソールに表示される。

food = 'Soft'; // 再代入するとエラーになる

constキーワードでは、再代入できない変数の宣言とその変数が参照する値(初期値)を定義できます。

次のように、constキーワードに続いて変数名を書き、代入演算子(=)の右辺に変数の初期値を書いて変数を定義できます。

#まとめ

letconstの使い分け

再代入が必要な変数のみletで宣言し、それ以外はconstで宣言する。
varは利用する理由がないため利用しないこと。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?