gpt4 book ai didi

javascript - 嵌套的辅助函数和性能

转载 作者:搜寻专家 更新时间:2023-11-01 05:11:05 25 4
gpt4 key购买 nike

嵌套的辅助函数有助于让您的代码更易于理解。 Google 甚至建议在其 style guide 中使用嵌套函数.我想知道这些嵌套函数的实例化和性能。例如,

work(1);
work(2);

function work(a) {
// do some stuff
log();
// do some more stuff
function log() {
console.log(a);
}
}

work被实例化了一次,但是log是否被实例化了两次?

如果每次执行work时都实例化log,一般会建议不要嵌套函数吗?相反,编写如下代码

work(1);
work(2);

function work(a) {
// do some stuff
log(a);
// do some more stuff
}

function log(a) {
console.log(a);
}

这些例子过于琐碎,问题更多的是关于一般情况。

最佳答案

work is instantiated once, but is log instantiated twice?

是的,每次调用工作

would it generally be recommended not to nest functions?

为什么不呢?我猜你是在暗示性能问题。

一种做法是好是坏取决于您使用它的原因。对于简单的帮助程序,最好将它们保留在本地,因为这意味着您可以使它们只适合您的特殊情况,而不必担心通用功能的额外麻烦。例如。用前导零填充数字:

function pad(n) {
return (n<10? '0' : '') + n;
}

n 预计始终在 0 到 99 范围内的情况下作为助手工作得很好,但作为一般函数缺少很多功能(处理非数字 n,-五个数字等)。

如果你关心性能,你总是可以使用闭包,这样助手只被实例化一次:

var work = (function() {

function log() {
console.log(a);
}

return function (a) {
// do some stuff
log();
// do some more stuff
};
}());

log 在闭包中被多个函数使用时,这也是有意义的。

请注意,对于单个案例,这是非常微观的优化,不太可能带来任何明显的性能差异。

关于javascript - 嵌套的辅助函数和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652563/

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