JavaScriptのletとvarの違い
3740 ワード
JavaScriptのletとvarの違い letキーワード .let宣言を使用する変数は、あるブロックレベルでのみ有効であり、letはブロックレベル を有する..letキーワードを使用して宣言された変数には、変数が存在しない ..letキーワードを使って宣言する変数には、一時的なデッドタイムがあります.
従って、ES 6にはブロックレベルのスコープ概念が導入されている.
letキーワード
ES 6に追加された変数を宣言するキーワード
1.let宣言を使用する変数は、あるブロックレベルだけ有効で、letはブロックレベルを持っています.
letキー宣言を使用する変数はブロックレベルの作用領域を有し、var宣言を使用する変数はブロックレベルの作用領域特性を備えていない.
2.letキーを使って宣言した変数には、変数の昇格はありません.
letキーを使って変数を宣言するには、先に宣言してから使うしかありません.
3.letキーワードを使って宣言した変数には、一時的なデッドゾーンがあります.
for(var i = 0; i<10; ++i){
}
console.log(i);//10
なぜ、iの作用域は循環体を超えているのですか?ブロックレベルのスコープでは、var定義変数を使用して、varはブロックレベルの特性を持たないので、ブロックレベルのスコープ外でも有効であり、グローバル変数を定義するものとみなされる.従って、ES 6にはブロックレベルのスコープ概念が導入されている.
letキーワード
ES 6に追加された変数を宣言するキーワード
1.let宣言を使用する変数は、あるブロックレベルだけ有効で、letはブロックレベルを持っています.
letキー宣言を使用する変数はブロックレベルの作用領域を有し、var宣言を使用する変数はブロックレベルの作用領域特性を備えていない.
for(let i = 0; i<10; ++i){
}
console.log(i);//not defined
サイクル中にletキーを使って循環変数を宣言します.サイクルが壊れてもアクセスできます.2.letキーを使って宣言した変数には、変数の昇格はありません.
letキーを使って変数を宣言するには、先に宣言してから使うしかありません.
console.log(i);//not defined
let a = 20;
varキーを使って宣言した変数には、変数が上昇します.3.letキーワードを使って宣言した変数には、一時的なデッドゾーンがあります.
var i = 20;
if(true){
console.log(i);//not defined
let i =10;
}
本来なら出力20が必要ですが、エラーが定義されていません.これはletの一時停止領域が同名のグローバル変数をブロックレベルの作用領域で遮断しています.let宣言の変数を使って、現在のブロックレベルの作用領域と結合して、その名前の変数を一時的にブロックレベル内にlet定義の変数以外の変数が見つからないようにしています.