letの仕様に関する知識を問うJavaScriptの問題
nove-b
June 21, 2023
先日、とあるSNSを見ていたら、JavaScriptの問題が出されていた。
さて、ここで問題
このコードを実行した結果、どのような結果が求められるでしょう。
予想
面白そうなので実行する前に推測してみる。 まず、If文がtrueなので当然のようにIfの中身が実行される。 ここでLetの仕様の話になるのだが、Letは関数内でスコープされるので、先頭で定義されたLetとIf文の中のLetは違うものだということになる。
結果、If文の中のaは20となり、outsideのaはどこからも影響を受けずに10のままになる。
つまり2が正解になると予想される。
結果
正しいと証明された。
たぶん予想の仮説も正しいが、念のためChat Gptに聞いてみる。
うん、同じことを言っているので一安心した。
Var or Const
Var
ちなみにVarで定義すると、aが毎回上書きされるので、
になる。
Const
ConstもLetと同様の結果になる。
Discussion in the ATmosphere