【发布时间】:2014-01-24 07:54:15
【问题描述】:
如果我想让一个函数在第一次运行时做一些不同的事情,我可以在每次运行时检查它以确定它是否是第一次,或者我可以更改函数;像这样:
foo=function(a,b){
...do something1...
foo=_foo;
}
_foo=function(a,b){
...do something2...
}
这很糟糕吗?如果是这样,为什么?有一个更好的方法吗?我特别希望在 javascript 中实现这一点,但会考虑其他语言点。
【问题讨论】:
-
我通常使用静态变量(属性)作为标志来处理“首次运行”场景
-
这真的取决于你想如何修改函数。通常,这用于缓存,因此它只是函数用户不应该注意到的性能增强。如果是这样的话,那就没问题了。如果没有,您可能需要详细说明您的具体情况。
-
几乎总是很糟糕。过去我们会为资源受限的系统编写自修改代码,而您的浏览器不是其中之一。 IMO,即使是记忆也不是一个很好的借口,但这不是技术辩论。
-
函数是对象。你最好有一个函数,一个简单的
if (!foo.hasrun) { foo.hasrun = true; first time code; } else { next run code }类型的东西。
标签: javascript function-pointers control-structure