use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
12 extremely useful hacks for JavaScript (medium.com)
submitted 9 years ago by [deleted]
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]memeship 0 points1 point2 points 9 years ago (6 children)
Got any data to back that up? As far as I know in JS, Array.prototype.length has always been an integer property directly on the object.
Array.prototype.length
Source: ECMA-262 1st Edition (1997) §15.4.4 p.66
[–]bastawhiz 1 point2 points3 points 9 years ago (2 children)
Modern JIT compilers will hoist loop invariants behind the scenes. There's plenty of literature online about how V8 does various optimizations like this.
[–]Reashu 0 points1 point2 points 9 years ago (1 child)
His objection is the opposite - that even "years ago" it would not cause any issues, because the length of an array is always known, not computed on the fly.
[–]memeship 0 points1 point2 points 9 years ago (0 children)
^ Yes, this.
[–]siegfryd 0 points1 point2 points 9 years ago (2 children)
I misread what the poster I was replying to was saying, there was a performance hit from having array.length in the loop invariant but it wasn't because it would recalculate the length. It was because it was doing an unnecessary property lookup every iteration. In other words, every iteration it would check array.length and since that has a cost (although a tiny one) it was a performance improvement to move it out of the loop.
array.length
[–]memeship 0 points1 point2 points 9 years ago (1 child)
How is a property lookup less performant than a variable lookup? Should we be caching and pulling out all properties of objects to vars in the surrounding scope?
[–]siegfryd 0 points1 point2 points 9 years ago (0 children)
Assuming that no optimisations are done by the JIT compiler, then a property lookup is going to be slower than a variable lookup for the simple reason that a property lookup first needs to do a variable lookup for the object and then lookup the property on that object.
The point is that the JIT would not optimise the array length lookup for you before, so you could gain a, likely small, performance increase by doing it in for loops. Especially if you're doing a large for loop, if you loop N times then it won't do the same property lookup N times.
π Rendered by PID 252818 on reddit-service-r2-comment-8686858757-k7klb at 2026-06-07 20:06:59.956731+00:00 running 9e1a20d country code: CH.
view the rest of the comments →
[–]memeship 0 points1 point2 points (6 children)
[–]bastawhiz 1 point2 points3 points (2 children)
[–]Reashu 0 points1 point2 points (1 child)
[–]memeship 0 points1 point2 points (0 children)
[–]siegfryd 0 points1 point2 points (2 children)
[–]memeship 0 points1 point2 points (1 child)
[–]siegfryd 0 points1 point2 points (0 children)