Basic JavaScript - Stand in Line

Tell us what’s happening:
I don’t understand why I have to declare a variable return to return the removed value when the method .shift() already returns the removed value

// Only change code above this line
}

Your code so far

function nextInLine(arr, item) {
  // Only change code below this line
  arr.push(item);
  arr.shift();
  // Only change code above this line
}

// Setup
let testArr = [1, 2, 3, 4, 5];

// Display code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6));
console.log("After: " + JSON.stringify(testArr));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Stand in Line

Link to the challenge:

You don’t have to declare a variable if you don’t want to.
Just return the result of the shift.

Thanks for the answer

But .shift() method already returns the removed value by default, isn’t it?
If that’s the case why should I write the return line?

The shift will return it to the caller. The caller is the function.
The function needs to also return it to its caller.

Now I’m totally lost :laughing:

Ask yourself, who called shift?
Answer: the function

Therefore, the function is the one that gets to receive the return value from shift.

Who called the function?

The code in the global scope.
That code will not see anything going on inside that function unless the function goes to the trouble of returning something.

Functions without an explicit return result in undefined.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.