Tell us what’s happening:
what’s the difference between the two, and why doesn’t the 2nd example work?
example 1
function reverseString(str) {
return str.split('').reverse().join('');
}
example 2
Your code so far
function reverseString(str) {
str.split('');
str.reverse();
return str.join('');
}
reverseString("hello");
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15
.
Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-algorithm-scripting/reverse-a-string
is it because it calls the original argument every time I call a new method in a new line?
Every method returns a result. When you chain methods, the returned result is passed on to the next method in the chain until the last result is return by the return command.
str.split(""); returns an array but is not assigned anywhere and immediately garbage collected.
var str = str.split(""); here the return value( in this case an array) of the split method is assigned to the str variable.
In javascript you can reassign variables eventhough you’re using a method on the very same variable( in this case the str variable).
I recommend opening the console in the browser and trying for example “hello”.split(""); In the console you can see what the split method returns in the console without being assigned to a variable. Also create a function with a bunch of methods inside the function without assigning or returning them to see what happens.
2 Likes