45
33

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 5 years have passed since last update.

JavaScript バーロー!変数定義、varとletの違いをまとめてみた

Posted at

JavaScriptの変数定義、varとletの違いをまとめてみた:イントロ

 

JavaScriptを使う上で変数定義がvarとletがある。
その違いとどちらを使うべきを書いていこうと思います。
ちなみにバーローについては、某探偵少年の名セリフとvar、let(ばー、れっと)をかけてるだけです。。。。むりやりですが(笑)

まず変数を宣言するとは

 

・ざっくりですが値を格納するための領域を確保する
・変数を利用するための宣言

といったところです。
下記の様に宣言します。

 

var hensuu1 = 1;       // varの変数定義
let hensuu2 = "変数"; // letの変数定義

本題!varとletの違い

 

上記のように宣言できるのを見ると違いがない様に見えますが、
大きな違いとしては、letの方がES2015という最近追加された機能で、
letの方がコードの保守性が良いように思います。

違いを下記にまとめていきます。

■ 相違点  ■###

①変数の重複許容 var => 許す let => 許さない

varは変数の重複を許容しますが、letは許容しません。


var hensuu = "変数1";
var hensuu = "変数2";

console.log(hensuu); // 変数2と表示 最初の宣言は上書きされる

let hennsuu = "へんすう";
let hennsuu = "へんすう2";
console.log(hennsuu); // Idemtifer 'hennsuu' has already been declardとエラーになる
            // 変数'hennsuu'はすでに宣言済みです

 

なので
letを使った方が同じ名前の変数をうっかり使ってしまい、変数が予想外のものになったり、バグが発生しにくいと言えます。
 

②ブロックスコープの認識 var=>認識しない let=>認識する

letの方がより細かく変数の有効範囲を管理できます。

なんとJavaScriptには、ブロックレベルのスコープが存在しません!!
(JavaやPHPなどの言語からすると驚きですよね。。。)

たとえばif文など


if (true) {
    var i = 1;
}

console.log(i); // 1と出力

この様に
ブロックを抜けたあとでも、変数iが有効になります。

これがletだとちゃんとスコープを認識します


if (true) {
    let i = 2;
}

console.log(i); // 変数iはスコープ外なのでエラーとなる

 

これは、良いですね!違和感がなくなります!

## まとめ
 
varとletであればletを使ったほうが安全!!

しかし、letはES2015から利用できるものなので、環境を確かめてから使いましょう。
良いコードを書くためにlet's let!

。。。苦笑

45
33
0

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
45
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?