javascript - 自修改功能不好吗?

标签 javascript function-pointers control-structure

如果我希望一个函数在第一次运行时执行不同的操作,我可以在每次运行时检查以确定是否是第一次,或者我可以更改该函数;像这样的东西:

foo=function(a,b){
    ...do something1...
    foo=_foo;
}
_foo=function(a,b){
    ...do something2...
}

这很糟糕吗?如果是这样,为什么?有一个更好的方法吗?我特别希望在 JavaScript 中实现这一点,但也会考虑其他语言点。

最佳答案

从严格意义上来说,这不是一个“自修改”函数 - 您不会动态修改任何代码(这会很糟糕),只需将另一个值分配给函数名称。这在大多数情况下都很好,并且使多态代码变得非常简单和优雅。为了使意图更清晰,您可以将“第一次”代码分解为单独的函数:

function firstTimeFoo() {
    .....
    foo = normalFoo
}

function normalFoo() {
    ...
}

foo = firstTimeFoo

关于javascript - 自修改功能不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957970/

相关文章:

javascript - 解决这类问题需要研究什么?

回调函数误解

loops - "single-entry"和 "single-exit"对于语句意味着什么?

c++ - 在控制结构中定义变量

javascript - 单击提交按钮之前表单不断重定向

javascript - AngularJS 中的 Hacker Typer Effect(在随机按键时显示特定文本)

c++ - 如何从另一个类调用指向成员函数的指针?

c++ - 将方法作为函数指针传递

Scala:具有多个代码块的自定义控制结构

javascript - 在应用程序运行时向 Vue.js 路由器添加路由