Javascript
関数で定義されたローカル配列を引数として別の関数に渡すと、配列が空でない限り、上流の配列が変更されます。たとえば
、foo
別の関数に言うbar
var foo = function() {
var x = [9]; //Array is not empty
bar(x);
console.log("x =>",x);
};
var bar = function(x) {x[0] = 1;};
foo(); // x => [1]
の出力x => [1]
。配列が空で、呼び出された関数で変更された場合bar
、呼び出し元の関数で配列を更新しません。foo
var foo = function(){
var x = []; //Array is empty
bar(x);
console.log("x =>",x); };
var bar = function(x) {x = [1];};
foo(); // x => []
しかし、配列プッシュを使用する場合、なぜ、空の配列をどのように更新するのfoo
でしょうか?
var foo = function(){ var x = []; bar(x); console.log("x =>",x); };
var bar = function(x) {x.push(3);};
foo(); // x => [3]