var
function show(){ var a = 1 } console.log(a,'外部') // a is not defined
// 変数の昇格 function show(){ console.log(a) } var a = 1 show() // 1
function show(){ var a = 1 var a = 2 console.log(a) } show() //2
要約すると: 1. varで定義される変数は、閉じた関数全体です。
2、変数の昇格は、最初の数行で関数内のvarで定義された変数に関係なく、その変数のスコープの先頭に昇格します。
3、var定義された変数は繰り返すことができ、変数の次の定義は、上記の定義された変数を上書きします。
let
let a = 1 function show(){ let a =2 console.log(a) } show() // 2
function show(){ let a =1 let a =2 console.log(a) } show() // Identifier 'a' has already been declared
function show(){ console.log(a) let a = 1 } show() // Cannot access 'a' before initialization
要約: 1、定義された変数が昇格しないようにします。
2 の定義を繰り返すことはできません。
const
const a =1 function show(){ a = 2 console.log(a) } show() // Cannot access 'a' before initialization
要約: 1. constは定数の宣言にのみ使用されます。
2、constで定義された基本型定数は変更できず、宣言は初期化されなければなりません。
3は、変数の昇格になることはありません、定義を繰り返すと、エラーが報告されますと同じです。