Javascript 闭包行为在运行时很奇怪

标签 javascript

考虑这段代码:

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/

相关文章:

javascript - Google map JavaScript 未在移动浏览器上完全加载

javascript - 尝试在 AdWords 脚本中进行本质上的 vlookup,但花费的时间太长

javascript - 在 API 帖子中注册用户时设置电子邮件和用户名的多重验证

javascript - 在传单侧边栏中切换 GeoJSON 层

javascript - 我希望 div 的背景图片应该自动更改

javascript - 在Screeps中,是否以允许写入CPU极限健壮代码的方式实现CPU极限?

javascript - 如何在 javascript 中修复此错误 "missing; before statement"?

javascript - 如何在Angular JS中从一个模块调用服务到另一个模块服务

javascript - 通过公共(public)键对对象数组进行分组,将嵌套属性合并到数组中

javascript - 如何显示文本框类型的值=日期asp.net