- Published on
javascriptでletとvarの違いを簡単に解説
javascriptのletとvar違いはなんだろうか、いつどっちを使えばよいのかわからない。 ということがあると思います。そこで、letとvarの違いを簡単にわかりやすく説明しようと思います。
そもそもletはES6で導入された記法で、下に記述してあるとおり、
大きな違いは、スコープの範囲がブロックの中だけにあるのがlet
で、
定義したらグローバルにアクセス可能なものがvar
になります。
let allows you to declare variables that are limited to the scope of a block statement, or expression on >which it is used, unlike the var keyword, which declares a variable globally, or locally to an entire function > regardless of block scope.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
実際に見てみましょう。
{ var usingVarGreetings = "hi" let usingLetGreetings = "hi" console.log(`inside of block var: ${usingVarGreetings}`) // inside of block var: hi console.log(`inside of block let: ${usingLetGreetings}`) // inside of block let: hi } console.log(`outside of block var: ${usingVarGreetings}`) // outside of block var: hi console.log(`outside of block let: ${usingLetGreetings}`) // Uncaught ReferenceError: usingLetGreetings is not defined
let
は定義したブロック内でしかアクセスできないので、
このようにブロックの中でlet
で定義したusingLetGreetings
はブロック内でしかアクセスができません。対して、var
で定義するとグローバルスコープになるので、ブロックの外でも使うことができます。
このようにスコープの範囲がlet
とvar
との大きな違いになります。
そのため、ブロック外で、グローバルな環境下でletを使った場合は、それはvarと同じ働きになります。
// グローバルで定義しているのでvarと同じ働き方をする let usingLetHi = 'hi' { console.log(usingLetHi) // hiを表示 } usingLetHi = 'こんにちは' function dispalyGreeting() { console.log(usingLetHi) } dispalyGreeting() // こんにちは
またlet
に定数の要素を加えたものがconst
になります。