【问题标题】:javascript function rewrite itself inside function how does it work behind the scene?javascript函数在函数内部重写自己它是如何在幕后工作的?
【发布时间】:2013-10-04 07:07:52
【问题描述】:

这是我已经尝试过的一些代码

function myFunc(){

    alert("3");

    myFunc = function (){

        alert("something else");

    }


}

我想了解 javascript 的幕后发生了什么

当我执行 myFunc 时,它的警报 2 和第二次当我执行它时,警报 "something else"。 调用此myFunc 时,幕后发生了什么函数如何从函数内部重写自身?

【问题讨论】:

    标签: javascript function scope


    【解决方案1】:

    myFunc 位于全局命名空间中,因此您可以重新定义它,当您使用 myFunc = function() ... 为其分配新函数时会发生这种情况。

    函数是对象,因此可以随着时间的推移被赋予新的定义。如果你想阻止函数再次运行,你甚至可以设置myFunc = undefined;

    【讨论】:

    • 当我们在同一个函数中重新定义函数时,它的激活对象是否也保持不变
    • 我觉得激活对象不一样,是不同的功能。
    • @grap_mao 是的,我也是
    • @Rex 这样做的一个原因是函数可以在第一次调用时检查运行环境(例如 CSS 或 JS 支持),然后重写自身以自动调用正确的版本下一次,优化环境测试的开销。
    【解决方案2】:

    您只是在第二次重新声明该函数。

    在页面加载时,您声明 myFunc() 会发出警报 3。
    当你执行myFunc() 时,你声明了一个新函数,它会提醒“其他东西”;

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 2018-03-07
      • 2011-05-24
      • 2019-02-01
      • 2021-11-29
      • 2022-12-29
      • 2020-04-29
      • 1970-01-01
      • 2015-11-25
      相关资源
      最近更新 更多