我有一個問題,我不能深究,所以任何幫助將不勝感激。Javascript全球變量範圍/覆蓋接頭
- 我的素文字的我聲明一個全局值(「
_raw
」)頂部 - (使用jQuery)我做一個Ajax調用,它返回JSON數組數據(我已經 選中,JSON數據正確)
- 我藉此JSON響應,並將其分配給
_raw
- 當我點擊一個鏈接,
_raw
被傳遞給一個函數,如function myFunction(dataArray)
,調用myFunction(_raw)
- 在這個函數中,基於一些 標準,
dataArray
被剪接(即dataArray.splice(2,1)
) dataArray
然後返回。
例如
var _raw;
// AJAX call sets RAW to an array e.g. Apple, Banana, Pear, Pineapple, Coconut, Raspberry
myFunction(dataArray){
var data=dataArray;
data.splice(2, 1);
return data[0];
}
$('a').click(function(){
result = myFunction(_raw);
alert(result);
// First time this is run, returns 'Pear', however, second time, returns 'Coconut'- as if the splice is being performed on _raw as well as myArray/data...
});
- 我很欣賞上面有一些差的代碼,這更說明問題
我的問題是,據我所看到的,只是時間_raw
是設置,是在AJAX調用期間,但是,當函數myFunction被調用時,通過_raw
,拼接似乎也會影響_raw
本身。這是爲什麼發生?
數組在JavaScript中作爲參考傳遞,因此數組是指針,就像對象,函數等一樣...但是,您可以使用array.slice返回新數組。 – mpm 2012-04-04 11:03:45