为什么我可以多次声明一个javascript var? [重复]

问题描述 投票:2回答:2

这个问题在这里已有答案:

为什么我能多次声明var?我希望有一个错误。

此代码引发错误:

let a = true;
let a = false;

未捕获的SyntaxError:已声明标识符'a'

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

var b = true;
var b = false;

预期:Uncaught SyntaxError:标识符'b'已经声明

javascript function ecmascript-6 var
2个回答
4
投票

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

这意味着每次使用var时,它基本上都会取消之前的操作,因为对于JavaScript解释器,您的第一个代码如下所示:

var b;
b = true;
b = false;

但这不适用于letconst,因为letconst是块范围的,而var是功能范围的。


1
投票

var被悬挂;重复的变量名称将被忽略。对于翻译,您的第二个代码段如下:

var b;
b = true;
b = false;

相比之下,let没有悬挂,因此禁止重复声明。

© www.soinside.com 2019 - 2024. All rights reserved.