我得到
未捕获的语法错误:标识符'a'已被声明
谁能告诉我为什么?
let a = 3;
function a() {
let a = 1;
}
console.log(a);
a();
答案 0 :(得分:1)
let
使变量块成为作用域。在声明了a
的块中打开的所有块都知道a
。
此外,您的第一个a
和函数a
正在碰撞。
答案 1 :(得分:1)
基本上,您是这样做的:
let a = function () {
let a = 1;
}
let a = 3; // At this point you already have 'a' variable
答案 2 :(得分:1)
首先,您要创建一个与已经创建的变量'a'相同名称的函数,无论您是否真的不应该这样做。
第二个让您声明变量的范围仅限于使用它的块,语句或表达式。这与var关键字不同,该关键字在全局范围内或在整个函数本地定义变量,而不管块范围如何。换句话说,您的函数已经声明了变量“ a”。