让声明的变量可以声明或不声明

时间:2018-09-12 12:19:09

标签: javascript typescript

我得到

  

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

谁能告诉我为什么?

let a = 3;

function a() {
  let a = 1;
}
console.log(a);
a();

3 个答案:

答案 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”。