gpt4 book ai didi

javascript - ReferenceError 带有在外部作用域中声明的 "let"变量

转载 作者:行者123 更新时间:2023-12-03 22:29:46 24 4
gpt4 key购买 nike

<分区>

考虑一下:

'use strict';

{
let p = 1;
{
console.log(p);
let p = 2;
}
}

直觉告诉我们它应该记录“1”(因为 var 在重新声明之前必须保留其旧值)。但是,实际结果是 ReferenceError。这是为什么? (将不胜感激基于标准的解释)。

请注意,我已经在外部作用域中声明了 p,所以它在内部 block 中是已知的。如果您注释掉 p=2 行,一切正常。

作为事后分析,虽然这种行为似乎已记录在案,但它仍然非常违反直觉,请参见。这个 C 代码:

void main() {
int p = 1;
{
printf("%d\n", p); // prints '1'
int p = 2;
}
}

还有一个 JS fuckup 特性需要记下!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com