【发布时间】:2022-01-12 04:50:16
【问题描述】:
我发现了以前从未想过的非常奇怪的行为。我不确定这是否与 TDZ 有关,因为我认为 TDZ 是从外部范围到内部范围,而不是像这种情况下相反。请注意以下示例中的arg。
// Works
const test = {
func: (arg) => {
const obj = {
foo: arg,
}
return obj.foo;
}
}
// Error
const test = arg => {
{
const arg = arg; // Cannot access 'arg' before initialization
}
}
【问题讨论】:
-
抛开令人困惑的错误消息,为什么要尝试重新声明函数参数?
-
@Phil 为什么不呢?也许我想让它保持不变。
-
澄清一下,您是在问为什么这是一个错误吗?我只是想阻止一堆答案,向您展示如何在不解决真正的问题的情况下避免错误
-
@Phil 已经处理好了。
-
我更新了问题,以便当它出现在搜索结果中时,人们会立即知道它是否与 他们 收到该错误的原因相关(很可能不是)。
标签: javascript variables scope arguments constants