在Javascript
當我們通過在函數定義到不同的函數作爲參數,將修改上游陣列一個局部陣列除非數組爲空 例如說foo
到一個不同的功能說bar
數組如何在被調用函數中更新調用函數中的數組,並將其傳遞給javascript中的函數?
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 => []
但是萬一如果我們使用數組push的原因,它如何更新foo
中的空數組?
var foo = function(){ var x = []; bar(x); console.log("x =>",x); };
var bar = function(x) {x.push(3);};
foo(); // x => [3]
因爲你在數組引用上調用'push'。在第一個例子中,你設置了'x',但它是一個不同的'''因爲它在一個函數內。 – 2013-04-30 19:23:45
沒有關於空數組行爲不同的特殊規則,並且您的第一個示例應該顯示'[9]'。 (以防萬一,在FF20中驗證它)。如果你試圖將你的實際問題簡化成最小的代碼段,那麼你必須忽略一些重要的東西。 – Xion 2013-04-30 19:26:42