为什么下面的代码中没有语法错误?
var num = 8;
var num = 10;
console.log(num) // 10
而
var num = 8;
let num = 10;
console.log(num) // already decleared error
答案 0 :(得分:2)
第一种情况将呈现为:
var num;
num = 8;
num = 10;
console.log(num); // output : 10
第二种情况将呈现为:
var num;
num = 8;
let num; // throws Uncaught SyntaxError: Identifier 'num' has already been declared
num = 10
console.log(num);
答案 1 :(得分:1)
由于与 var 不同,无法使用 let 重新声明变量,这样做会引发语法错误:标识符已声明。 重要的是,如果要避免使用诸如全局变量之类的反模式,如果将vars保留在范围内并使这些方法变小,则可能会避免重新声明vars bug。 重要的是第二个:var声明比const和let更快,所以在循环中,如果必须优化该方法,则可以使用var代替let / const。