为什么我可以多次声明一个 javascript 变量?

Why can I declare a javascript var multiple times?

为什么我可以多次声明一个变量?我预计会出现错误。

此代码引发错误:

let a = true;
let a = false;

未捕获的语法错误:标识符 'a' 已经声明

为什么这也不会引发错误?

var b = true;
var b = false;

预期:未捕获语法错误:标识符 'b' 已声明

var 被吊起;忽略重复的变量名。对于解释器,您的第二个代码段如下所示:

var b;
b = true;
b = false;

相比之下,let 提升,因此禁止重复声明。

这是因为 var 有变量提升,但 let(或 const 没有)。

所以这意味着每次你使用 var,它基本上会取消之前的操作,因为对于 JavaScript 解释器来说,你的第一个代码看起来像:

var b;
b = true;
b = false;

但这不适用于 letconst,因为 letconst 是块作用域,而 var 是函数作用域。