javascript

変数の宣言(var と let)

概要

javascriptにおける変数の宣言を詳しく調べてみます。

本ブログでも以前の投稿(http://propansystem.net/blog/2018/06/20/post-6640/)で、変数の宣言について触れていますが、そもそもjavascriptには歴史的な話としてECMAScript(https://ja.wikipedia.org/wiki/ECMAScript)という名称で標準化されており、ECMAScriptにはバージョンが策定されています。

正式にリリースされているECMAScript2015(2015年に策定)になり、バージョンを省略してES6と呼ぶこともあります。

ES6の前までのバージョンでは、主にvarで宣言していましたが、ES6からはletで宣言することも可能です。

var と letについて

両者の違いは変数スコープの違いがあります。

varの宣言は
以下のような挙動になります。

[js]
var test = 10;
console.log(test);

{
var test = 20;
console.log(test);
}

console.log(test);
[/js]

出力結果は
[js]
10
20
20
[/js]
となります。
varで宣言された変数はブラケットで囲んだ後の変数testが20に置き換わっています。

続いて、letでの宣言を試します。
[js]
let test2 = 30;
console.log(test2);

{
let test2 = 40;
console.log(test2);
}

console.log(test2);
[/js]

出力結果は
[js]
30
40
30
[/js]
になります。
letで宣言された変数はブラケットの後、変数testの値のが30に置き換わっていません。
このようにletでの宣言は厳密にブラケット内で使うことができ、コーディングの際の不具合の低減につながります。

実装上の留意点

ECMAScriptの策定については、2009年に策定されたEdition5から、2015年以降にEdition6に変わりました。

言語仕様が変わると、ブラウザがそれに対応しているかどうか、といった問題も出てくるので、
一概にjavascript(ECMAScript)のバージョンだけを意識してコーディングができるとも言い切れません。
開発環境や利用環境、全体を見てのコーディングが必要です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です