2012-07-18 53 views
0

我有一個腳本設置這樣的(http://jsfiddle.net/YD66s/):消耗的Javascript變量時,變量a =變量b

var countFull = new Array(0,1,2,3,4,5,6); 
var countActive = new Array(0,1,2,3,4,5,6); 

function pickRandom(a) { 
    if(arguments[1].length == 0) { 
     arguments[1] = arguments[0]; 
    } 

    var m = Math.floor(Math.random()*arguments[1].length); 
    chosen = arguments[1].splice(m,1); 

    return chosen; 
} 

setInterval(function() { 
    pickRandom(countFull,countActive); 
}, 1000); 

當我運行此我想要的變量設置僅適用於該功能。相反,它會影響countFull到最後,因爲我使參數[1] =參數[0]。如何在JavaScript中,我可以只引用一個變量,但不會消耗它,最終參數[1]變成參數[0]。

希望這是有道理的。這促使我瘋狂地將不同的JavaScript變量與PHP等其他語言進行比較。

+0

究竟是什麼不起作用? – Bergi 2012-07-18 21:16:32

+0

你已經清楚地知道如何在不接受它們的情況下「消費」答案。 – 2012-07-18 21:17:00

+0

我遇到的問題是,我的數組參數[0]變成了參數[1],因此它們充當一個單元,我寧願使用參數[0]作爲副本,以便稍後使用它。 – csteel 2012-07-18 21:24:16

回答

1

Javascript數組只是指針,所以當你做參數[1] = arguments [0]時,你實際上只是設置指針,但底層數組是相同的。因此,每次修改參數[1]時,還要修改參數[0]。要做你想做的事,你需要複製數組。你可以這樣做:

if (arguments[1].length == 0) { 
    for(var i = 0; i < arguments[0].length; i++) { 
    arguments[1][i] = arguments[0][i]; 
    } 
} 
+0

這有助於!我不知道array = array只是一個指針。這是很好的知道。這是其他變量還是數組? – csteel 2012-07-18 21:31:01

0

要複製數組而不是引用它,請使用copy = original.slice(0)