我遇到过一些对javascript数组进行排序的代码。在排序回调中,声明了一个辅助函数。在排序中声明这个是不是性能较差?在排序函数之外创建辅助函数,然后在排序函数中使用,是不是性能更好?在此之前
rows.sort((rowA, rowB) => {
const getValue = row => {
const sortValue = row.value;
if (isNaN(sortValue)) {
return sortValue.toLowerCase();
} else {
return sortValue;
}
};
return getValue(rowA) < getValue(rowB) ? -1 : 1;
});
之后
const getValue = row => {
const sortValue = row.value;
if (isNaN(sortValue)) {
return sortValue.toLowerCase();
} else {
return sortValue;
}
};
rows.sort((rowA, rowB) => {
return getValue(rowA) < getValue(rowB) ? -1 : 1;
});
发布于 2020-04-21 05:55:14
一般来说,这对99%的用例都无关紧要。
排序需要N log(N)
时间,所以在运行它之前添加的任何恒定时间复杂度都不会影响复杂性。
在细节上-是的,它会更慢,因为你需要在每次迭代中将整个函数放入内存中。
在设计中-不要将任何函数放在另一个函数中,除非你是javascript专家,并且你100%确定你想要的。
结论-几乎没有理由将函数放在另一个函数中,如果这样做会有几个缺点,因此不要这样做。
https://stackoverflow.com/questions/61331442
复制相似问题