【发布时间】:2015-05-01 04:06:46
【问题描述】:
由于某种原因,我在 JS 中有必须硬编码的函数。如何制作一个编写这个硬编码函数的函数?这是我的例子;假设 obj 是一个多数组/JSON 对象:
function foo2(obj) {
var t = obj["key1"];
t = t["key2"];
return t;
}
function fooN(obj) {
var t = obj["key1"];
t = t["key2"];
...//more goes here
t = t["keyN"];
return t;
}
我知道访问多数组/对象有更简单的方法,但是像这样的硬编码函数是迄今为止最快的,因为没有变量替换。谢谢。
【问题讨论】:
-
“出于某种原因。” ---这是一个糟糕的理由。当一些不合理的事情需要你编写糟糕的代码时 - 你最好避免它。
-
Premature optimization is the root of all evil. 你分析了吗?你知道你用漂亮的代码执行是不可接受的,而且硬编码的变体足够快吗?现代 JS 解释器速度非常快,即使在较慢的语言中,变量访问也被认为很便宜。
-
见new Function。它允许您将正文作为字符串提供,并定义函数。
-
你不需要一直分配变量。
return obj.key1.key2.key3....keyN -
你不认为最流行的 JS 解释器的作者已经尽可能地优化了像对象属性访问这样常见的东西吗?我真的怀疑你的“优化”会做很多事情。如果他们减慢你的代码,我什至不会感到惊讶。
标签: javascript functional-programming hardcode