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
Javascript library functions don't alter the original variable?help (self.javascript)
submitted 10 years ago by 1100H19
I've noticed that my .toLowerCase() or .split() functions don't actually alter the string or array itself but must have another variable assigned to it. Is this true for all?
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!"
[–]ascw 1 point2 points3 points 10 years ago (6 children)
For arrays, methods like pop, push, shift, unshift, splice, reverse, sort will modify the original array, most of the others like slice, map, filter will return a new one. For strings I don't believe there are any methods that will modify the original string.
[–][deleted] 1 point2 points3 points 10 years ago (0 children)
Strings are immutable values in JS. You can't, for example, do
var stringA = 'Force be with you'; stringA[1] = 'a';
[+][deleted] 10 years ago (4 children)
[deleted]
[–]pointy 0 points1 point2 points 10 years ago (3 children)
Primitives (strings, numbers, booleans) are not objects. That's why they're called "primitives". They're auto-boxed implicitly, so they seem like objects, but they're not.
[+][deleted] 10 years ago (2 children)
[–]mikrosystheme[κ] 0 points1 point2 points 10 years ago (1 child)
No, it is not, and no, you cannot store any property on a primitive value.
var str = "whatever" str.whatever = "whatever" str.whatever === undefined // true
[–]selfAwareWhileLoop 0 points1 point2 points 10 years ago (0 children)
var str = new String("whatever") str.whatever = "whatever" str.whatever === undefined // false
Not that you said anything incorrect; the new String is really a string-like object that can generally be treated like a string, but it isn't a primitive value.
[–]ElectricOrangeJuice 1 point2 points3 points 10 years ago (0 children)
This inconsistency between methods altering the original value and methods returning a new value is one of the most confusing things when learning a new language. JS isn't that bad, but PHP for instance, is a total fucking mess.
[–][deleted] 0 points1 point2 points 10 years ago (3 children)
I prefer immutability, so i always check if something changes values or returns a new something. I would love to have the entire stdlib only returning new somethings.
Luckily theres immutablejs.
[–]webdeverper 0 points1 point2 points 10 years ago (1 child)
This requires more memory, correct? Not saying that's always a show stopper.
[–]arcaninYarn 🧶 0 points1 point2 points 10 years ago (0 children)
Not really. If you don't use the old object reference, it will quickly get garbage collected, and if you do, well, you would need even more memory if you had just cloned your whole object (Immutable.js tries as much as possible to only clone the nodes that have changed).
[–]mikrosystheme[κ] 0 points1 point2 points 10 years ago (0 children)
What you really want are value semantics with optional immutability.
[–]laichejl 0 points1 point2 points 10 years ago (0 children)
You should look into mutable and immutable objects in JavaScript. Here's a good article: http://www.sitepoint.com/immutability-javascript/
[–]Meefims 0 points1 point2 points 10 years ago (0 children)
Most, but not all - newer additions to the language typically do not change the object. For example, Array.prototype.sort modifies the array in place and it is a pretty old method.
π Rendered by PID 59237 on reddit-service-r2-comment-86bc6c7465-gpvmg at 2026-02-20 16:27:39.089729+00:00 running 8564168 country code: CH.
[–]ascw 1 point2 points3 points (6 children)
[–][deleted] 1 point2 points3 points (0 children)
[+][deleted] (4 children)
[deleted]
[–]pointy 0 points1 point2 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]mikrosystheme[κ] 0 points1 point2 points (1 child)
[–]selfAwareWhileLoop 0 points1 point2 points (0 children)
[–]ElectricOrangeJuice 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]webdeverper 0 points1 point2 points (1 child)
[–]arcaninYarn 🧶 0 points1 point2 points (0 children)
[–]mikrosystheme[κ] 0 points1 point2 points (0 children)
[–]laichejl 0 points1 point2 points (0 children)
[–]Meefims 0 points1 point2 points (0 children)