varとletの違いは2つある
5035 ワード
はじめに
「javascriptの変数宣言は"let"で行え!」と言われているので素直に従っていましたが、
改めてなぜ"var"を使わない方が良いかをまとめてみます。
(1)letは変数の重複を許可しない
varで同名の変数を宣言してみます。
var.js
var name = "hoge"
var name = "fuga"
console.log(name);
>>fuga
上書きされて二つ目の宣言の"fuga"が出力されました。
同じくletでも同名の変数を宣言してみます。
let.js
var name = "hoge"
var name = "fuga"
console.log(name);
>>Uncaught SyntaxError: Identifier 'name' has already been declared
既に宣言済みだよとのエラーメッセージが出力されました。
※letは変数の再宣言ができないため、変数の重複が起こらないという利点があります。
(2)letはブロックスコープを認識する。
大前提として、javascriptはブロックスコープを認識しません。
下記をご覧ください。
var.js
if(true){
var i = 5;
}
console.log(i);
>>5
JAVAやC#などのプログラミング言語を学習してきた方からすれば違和感を覚えるかもしれませんが、javascriptのvar命令はブロックスコープを認識しません。
そして、一般的にプログラミングのルールとして「スコープはできる限り限定すべき」というものがあります。そのルールに即した命令がlet命令です。
let.js
if(true){
let i = 5;
}
console.log(i);
>>usestrit.html:11 Uncaught ReferenceError: i is not defined
まとめ
①変数の重複を防ぐため
②スコープの範囲を限定するため
上記2点を理由にvarよりletを使う方が好ましいです。
注)限定的にvarを使った方が良い場面もありますが、あまり登場しないのでとりあえずletを使う方が良いでしょう。
参考
Author And Source
この問題について(varとletの違いは2つある), 我々は、より多くの情報をここで見つけました https://qiita.com/a05kk/items/bc39b7f6cfa98bf17e47著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .