JS如何处理同名的多个变量?

How JS works for multiple variables with same name?

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

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

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

因为与 var 不同,不能使用 let 重新声明变量,尝试这样做会抛出语法错误:标识符已经声明。 如果您要避免像全局变量这样的反模式,那么重要的是,如果您将变量保留在范围内并使方法变小,那么您将避免重新声明变量错误……可能。 重要的是 第二点 :var 声明比 const 和 let 工作得更快,所以在循环中,如果你必须优化方法,你可以使用 var 而不是 let/const.

第一种情况将呈现为:

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);