I'd like to know why the following function works:
function foo(list){
var array = [];
array.push(list);
return array;
}
> foo([1,2,3])
[[1,2,3]]
while this one doesn't:
function foo(list){
var array = [];
return array.push(list);
}
> foo([1,2,3])
1
What's the difference between them?
I'd like to know why the following function works:
function foo(list){
var array = [];
array.push(list);
return array;
}
> foo([1,2,3])
[[1,2,3]]
while this one doesn't:
function foo(list){
var array = [];
return array.push(list);
}
> foo([1,2,3])
1
What's the difference between them?
Share Improve this question edited Feb 22, 2018 at 12:52 Marco Bonelli 69.7k21 gold badges127 silver badges146 bronze badges asked Apr 7, 2015 at 1:30 Bruno HenriqueBruno Henrique 79710 silver badges21 bronze badges 2-
4
Because
push
doesn't return the array you're pushing on to. – Dave Newton Commented Apr 7, 2015 at 1:34 - Read the docs: developer.mozilla/en-US/docs/Web/JavaScript/Reference/… – epascarello Commented Apr 7, 2015 at 2:03
1 Answer
Reset to default 10If you look at the definition of the push method, it returns the length of the array after the push, not the array itself, that is why it is returning 1.
The push() method adds one or more elements to the end of an array and returns the new length of the array.
You are pushing an array with 3 elements to the new array, so in the new array you have an array as its content thus 1 is returned