当我使用在同一范围内已经使用let关键字声明的let关键字声明变量时,它会引发SyntaxError异常。考虑以下示例:
let a = 0;
let a = 1; // SyntaxError
function foo() {
let b = 2;
let b = 3; // SyntaxError
if(true) {
let c = 4;
let c = 5; // SyntaxError
}
}
foo();
我知道该示例无法执行,因为我们无法使用let重新声明变量,但可以使用var进行声明。所以我想清楚地了解见解nodejs和浏览器会发生什么?
“我想知道浏览器或nodejs如何处理这种情况?”
有人可以解释吗?
答案 0 :(得分:1)
let
为您提供了声明范围受限于变量的变量的特权,该表达式不同于var,但您不能在同一变量中重新声明相同的变量范围使用 let
。如果要在同一范围内更改变量的值,只需删除声明部分:
let a = 0;
a = 1;
function foo() {
let b = 2;
b = 3;
if(true) {
let c = 4;
c = 5;
}
}
foo();
在您的示例中,抛出了SyntaxError
。那么发生了什么,为什么会引发此错误呢?简而言之,您不符合语法规则(因为您尝试重新声明 let
变量,根据Javascript引擎,这是错误的语法)和Javascript引擎(在浏览器中和NodeJS)在解析代码时遇到这种错误的语法,并抛出SyntaxError
。
答案 1 :(得分:0)
Let 和 Const 声明将引发错误。但是,它们遵循不同的规则,因为它们的声明不会被悬挂,并且它们的范围仅限于包含花括号的第一组。
参考:https://www.quora.com/What-does-happen-if-we-re-declare-a-variable-in-JavaScript