1

Which strategy would be better?

// 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; });

Usually one says that one should declare variables as close to their actual usage as possible. But I'm not sure concerning the shown situation.

Wouldn't it be better to create the constant only one-time? Can't it cause (theoretically) a problem a create lots of variables when the array is very large?

2
  • inside - the variable is local, so no use outeside of it. Commented Nov 22, 2018 at 8:37
  • For strings it's probably fine, I would recommend not to re-create an array from a literal on every call though. Commented Nov 22, 2018 at 9:05

2 Answers 2

1

Given your example, creating a variable inside the some function is not really creating a variable inside a loop as it will be deleted upon exiting the function (so, at the end of each "iteration").

I'll go for the declaration inside the some function.

Sign up to request clarification or add additional context in comments.

Comments

1

Technically this is not a loop, even though it is similar in structure and functionality. Loops in JavaScript would be for, for ... in, for ... of and while. Those statements' body is a block. For instance:

const expected = "Some String"; let i = 0, expectedFound = false; while(i < result.length) { if(result[i].textContent === expected) { expectedFound = true; break; } i = i + 1; } 

would have a similar functionality to the some method.

some is an Array method that gets passed a callback function. This has various differences but I'm not sure how they play out in this specific scenario. For instance, it would probably be very bad for performance to declare a variable inside of the block, but I'm not sure how it would impact the case of the Array method callback function.

As a rule of thumb, I'd say if you're trying to squeeze performance out of JavaScript, you'd probably be better off with optimized loops than with Array methods. But that's a very important if. Unless we're talking about way over a hundred HTML elements, or of running this code several times per second, I don't think optimizing it should be a priority.

Some reading I found on the matter: https://hackernoon.com/javascript-performance-test-for-vs-for-each-vs-map-reduce-filter-find-32c1113f19d7

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.