gpt4 book ai didi

javascript - Performance & "Better Practice": with statement vs. 带一堆参数的函数

转载 作者:行者123 更新时间:2023-11-29 15:03:59 26 4
gpt4 key购买 nike

我最近在 JS 中做了很多模板,所以我总是遇到“邪恶的”with 语句。

它使模板更容易使用,因为您不必在变量前加上对象。

听说 with 语句不好,而且它们可能导致性能不佳,我着手寻找另一个解决方案:

我的解决方案:使用一组参数的函数

这是我的代码:

var locals = {
name : "Matt",
email : "wahoo@wahoo.com",
phone : "(555) 555-5555"
};

var keys = [];
var values = [];

for (key in locals) {
local = locals[key];

keys.push(key)
values.push(local);

}

keys = keys.join(',');

var fn = new Function(keys, "**TEMPLATE STUFF**"); // function(name, email, phone) {...}
fn.apply(this, values); // fn("Matt","wahoo@wahoo.com","(555) 555-5555")

注意:这些完成完全相同的事情。两者都是从任何人那里抽象出来的,所以长得令人讨厌的参数列表没什么大不了的。

我想知道哪个更好:使用 with 语句或具有大量参数的函数。

除非有人有更好的解决方案...?

谢谢!马特·穆勒

最佳答案

我发现您的解决方案非常臃肿。它非常重要,而 with 非常简单(一行代码本身与您的对象遍历和数组实例化相比成本非常低)。此外,您的解决方案需要在制作模板函数(以定义其参数)时准备好模板对象,在我看来这可能会证明在未来不太灵活。

查看 MDC .一个设计良好的模板大概会有很少的逻辑和大量的变量引用(如果不是这样,那么它应该是!),这使得 with 成为这种情况下的完美候选者,因为有在 with 的范围内应该很少有其他查找。

任何可能获得的额外性能似乎都是微优化,尽管不是理论上的,只是执​​行一些基准测试。 http://jsperf.com/with-vs-fn在您的版本的基准测试之前执行所有设置代码,但在函数执行期间执行 with 东西,所以这并不公平,尽管即使在最慢的迭代中您也知道它有多快; >400,000 次操作/秒是最慢的。我怀疑你需要每秒渲染超过 400,000 个模板......

关于javascript - Performance & "Better Practice": with statement vs. 带一堆参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com