使用var声明箭头函数后用let重声明为何报错?
为什么用var声明箭头函数后,用let重声明会报错?
这是因为JavaScript的变量声明规则限制:
- 在同一作用域内,
let/const不允许与已存在的var/let/const声明同名标识符,不管这个标识符绑定的是箭头函数、普通值还是其他类型。 - 虽然
var允许自身重复声明,但let的规则更严格:它属于块级作用域,存在「暂存死区」,同时完全禁止同一作用域内的重复声明行为——哪怕之前是用var声明的同名变量也不行。
举个和你场景一致的代码示例,运行后会触发和你相同的报错:
// 用var声明绑定了箭头函数的变量 var myFunc = () => { /* 函数逻辑 */ }; // 用let重声明同名变量,直接触发重复声明错误 let myFunc = '其他值';
需要注意的是,这个问题和箭头函数本身无关——哪怕你用var声明的是普通变量,再用let重声明同一个变量,也会报完全相同的错误。
内容的提问来源于stack exchange,提问作者leo_00
相关产品推荐
相关产品推荐

