哪种策略会更好?
// Creating the constant OUTSIDE the loop.
const expected = "Some String";
let expectedFound = result.some((element) => {
return element.textContent === expected;
});
// Creating the constant WITHIN the loop.
let expectedFound = result.some((element) => {
const expected = "Some String";
return element.textContent === expected;
});
通常,有人说应该声明变量尽可能接近其实际用法。但是我不确定所显示的情况。
一次只创建常数会更好吗? 当数组很大时,它不能(理论上)引起创建大量变量的问题吗?
答案 0 :(得分:1)
以您的示例为例,在some
函数内部创建变量实际上并不是在循环内部创建变量,因为在退出函数时它将被删除(因此,在每个“迭代”末尾)。 / p>
我将在some
函数中进行声明。
答案 1 :(得分:1)
从技术上讲,这不是循环,即使其结构和功能相似。 JavaScript中的循环为for
,for ... in
,for ... of
和while
。这些语句的主体是一个块。例如:
const expected = "Some String";
let i = 0, expectedFound = false;
while(i < result.length) {
if(result[i].textContent === expected) {
expectedFound = true;
break;
}
i = i + 1;
}
具有与some
方法类似的功能。
some
是一个 Array方法,该方法通过了回调函数。这有各种差异,但我不确定它们在这种特定情况下如何发挥作用。例如,在块内声明一个变量可能对性能非常不利,但是我不确定它将如何影响Array方法回调函数的情况。
根据经验,我想说的是,如果您想通过JavaScript压缩性能,那么使用优化循环可能会比使用Array方法更好。但这是一个非常重要的如果。除非我们要讨论超过一百个HTML元素,或者每秒要运行几次此代码,否则我认为优化它不是优先事项。
我发现了一些与此有关的内容:https://hackernoon.com/javascript-performance-test-for-vs-for-each-vs-map-reduce-filter-find-32c1113f19d7