JS如何处理具有相同名称的多个变量?

时间:2020-07-10 08:34:44

标签: javascript ecmascript-6 var let

为什么下面的代码中没有语法错误?

var num = 8;
var num = 10;
console.log(num) // 10

var num = 8;
let num = 10;
console.log(num) // already decleared error

2 个答案:

答案 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。