letの仕様に関する知識を問うJavaScriptの問題
先日、とあるSNSを見ていたら、JavaScriptの問題が出されていた。 さて、ここで問題 let a = 10 if(true) { let a = 20 console.log(a, 'inside') } console.log(a, 'outside') // Q. What is the output of thie below code? // 1. 20, 'inside' and 20, 'output // 2. 20, 'inside' and 10, 'output // 3. 10, 'inside' and 10, 'output // 4. 10, 'inside' and 20, 'output このコードを実行した結果、どのような結果が求められるでしょう。 予想 面白そうなので実行する前に推測してみる。 まず、If文がtrueなので当然のようにIfの中身が実行される。 ここでLetの仕様の話になるのだが、Letは関数内でスコープされるので、先頭で定義されたLetとIf文の中のLetは違うものだということになる。 結果、If文の中のaは20となり、outsideのaはどこからも影響を受けずに10のままになる。 つまり2が正解になると予想される。 結果 [LOG]: 20, "inside" [LOG]: 10, "outside" 正しいと証明された。...