Categories: ZAKKI

[JavaScript] var の代わりに let を使うべきか

function foo() {
  let x = 10;
  var z = 30;
  if (true) {
    let y = 20;
    var z = 40;
    console.log(x); // Output: 10
    console.log(y); // Output: 20
    console.log(z); // Output: 40
  }
  console.log(x); // Output: 10
//  console.log(y); // Uncaught ReferenceError: y is not defined
  console.log(z); // Output: 40
}

foo();

ChatGPTが吐き出したコードに少し手を加えたものだが、これ(変数z)を見てわかるように、var は入れ子で宣言できるくせに、関数スコープなので、内側ブロックでは上書き宣言になってしまう。こんなこと許されてよいのか?と思う人もいると思うが、関数スコープならその関数内で複数の宣言があったらエラーになって欲しいし、複数宣言できるならブロックスコープにして欲しい。ということから、let が追加された。

ざっくりと言えば、var の直感的ではないおかしな挙動をしないようにしたものがlet だとも言える。

なので、これからは、どう考えても let を使うべきで、var で無ければならない理由が見当たらない。のだが、まだ、var 派の開発者が少なからず居る。私はというと、let 派ではあるのだが、ついつい、癖でvar と書いてしまうヘボプログラマといったところだ。特に既存の var だらけの他人のプログラムをメンテナンスする時は、下手に let に変えたら、動かなくなるのではないかという恐怖心がわくこともある。動かなかったらほぼ元バグなのだが、めちゃくちゃ複雑怪奇なものだと、バグ取りをするのも面倒なので、var で逃げてしまうこともある。

大した使い分け的意味もなく、var と let が混在する状況も、あまりよくないとは思うということも、var を使いがちになる要因と言える。

はじめ

Recent Posts

トルコ旅行で考えた、日本のこれから

先日のトルコ旅行で、いろいろ感…

7日 ago

新千歳空港の駐車場なら、ココ!

https://www.hok…

1週間 ago

トルコ旅行Tipsまとめ(実体験から)

ネットで調べても分かりにくい、…

2週間 ago

株式投資は“余剰資金”で──その言葉の本当の意味を考える

はじめに:「余剰資金で投資しま…

2か月 ago

利確したくなるときこそ、自分の目的を見直すタイミング

投資とは「稼ぐ力」を育て、社会…

2か月 ago