Fiald case 1: let can work in it‘s block
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b //1
Case 2: Let has no "Hosting" Problem
function do_something() { console.log(foo); // ReferenceError let foo = 2; }
function do_something() { console.log(foo); //undefined var foo = 2; } //hosting: function do_something() { var foo = undefined; console.log(foo); foo = 2; }
Case 3: let不允许在相同作用域内,重复声明同一个变量: In a block, you can only define one variable one time.
// 报错 { let a = 10; var a = 1; } // 报错 { let a = 10; let a = 1; }
But if you do something like:
function f1() { let n = 5; if (true) { let n = 10; } console.log(n); // 5 }
There is no problem! becuase 5 and 10 are in different block scope.
时间: 2024-10-13 22:18:44