【发布时间】:2012-05-17 18:23:20
【问题描述】:
我遇到了一个无法解决的问题,因此我们将不胜感激。
- 在我的 scipt 的顶部,我声明了一个全局值 ('
_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 返回一个新数组。
标签: javascript arrays splice