【发布时间】:2017-04-15 09:49:25
【问题描述】:
var a;(function(){let a=10;console.log(a);})();
为什么它作为未捕获的语法错误抛出错误:标识符“a”已经被声明,尽管两者的范围不同。
【问题讨论】:
-
var a;和let a;都是声明,因此a已在let a = 10;已经存在的范围内重新声明 -
你能提供更多的上下文吗?你提供的解析代码对我来说运行得很好。
-
var 在全局范围内声明一个变量,而 let 在块范围内声明一个变量,这意味着 a 已经使用 var a 声明了;所以删除 let 并执行 a=10;
标签: ecmascript-6