考虑这段代码:
function f1(p) {
function f2() {
console.log(p); //Output: 10
}
f2();
}
f1(10);
此代码输出为 10。但如果我将其更改为以下代码:
function f1(p) {
function f2() {
debugger;
}
f2();
}
f1(10);
当我在控制台中调试代码时,如果我尝试读取 p,我会得到:
ReferenceError: p is not defined
为什么会这样?
最佳答案
p
可在 f2
中访问,但因为您不使用 p
,所以 p
似乎已被删除在 f1
声明和解析完成后由解释器/编译器处理性能问题。
关于Javascript 闭包行为在运行时很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796786/