Javascript全局变量作用域/拼接时覆盖
我有一个问题,我无法了解到底,所以任何帮助将不胜感激Javascript全局变量作用域/拼接时覆盖,javascript,arrays,splice,Javascript,Arrays,Splice,我有一个问题,我无法了解到底,所以任何帮助将不胜感激 A我在scipt的顶部声明了一个全局值(“\u raw”) (使用jQuery)我进行了一个Ajax调用,它返回JSON数组数据(我有 选中,则JSON数据正确) 我获取这个JSON响应并将其分配给\u raw 当我单击一个链接时,\u raw被传递到一个函数,例如函数myFunction(dataArray),用myFunction(\u raw) 在此函数中,基于 标准,dataArray被拼接(即dataArray.splice(2,
- A我在scipt的顶部声明了一个全局值(“
”)\u raw
- (使用jQuery)我进行了一个Ajax调用,它返回JSON数组数据(我有 选中,则JSON数据正确)
- 我获取这个JSON响应并将其分配给
\u raw
- 当我单击一个链接时,
被传递到一个函数,例如\u raw
,用函数myFunction(dataArray)
myFunction(\u raw)
- 在此函数中,基于
标准,
被拼接(即dataArray
)dataArray.splice(2,1)
- 然后返回数据数组
- 我理解上面有一些糟糕的代码,这更能说明问题
我遇到的问题是,据我所知,唯一设置
\u raw
的时间是在AJAX调用期间,但是,当调用函数myFunction时,通过\u raw
,拼接似乎也会影响\u raw
本身。为什么会发生这种情况?数组是通过引用传递的,因此var data=dataArray
不会复制数组。
因此,修改原始数组 用于复制阵列。
或者,由于您似乎希望获取第二个元素的值,请使用数字索引:
function myFunction(dataArray){
return dataArray[2];
}
数组是通过引用传递的,因此
var data=dataArray
不会复制数组。
因此,修改原始数组 用于复制阵列。
或者,由于您似乎希望获取第二个元素的值,请使用数字索引:
function myFunction(dataArray){
return dataArray[2];
}
splice()
更改原始阵列:请参见
与slice()不同,splice()方法修改原始数组并返回新数组
作为旁注,您实际上不需要将\u raw
作为myFunction()
的参数传递,因为它是一个全局变量,因此在任何地方都可见splice()
更改原始数组:请参见
与slice()不同,splice()方法修改原始数组并返回新数组
作为旁注,您实际上不需要将
\u raw
作为myFunction()
的参数传递,因为它是一个全局变量,因此在JavaScript中随处可见,数组总是通过引用传递的,所以当您将它赋给数据变量时,您只需创建一个指向_raw的指针,所有操作都将在_raw上完成
您需要克隆阵列。取决于其中的内容以及它是否是多维的,您可能需要使用一种方法来按照进行深度复制。在JavaScript中,数组总是通过引用传递的,因此当您将其分配给数据变量时,您只需创建一个指向_raw的指针,所有操作都将在_raw上完成
您需要克隆阵列。取决于其中的内容以及它是否是多维的,您可能需要使用一种方法来按照进行深度复制。数组在javascript中作为引用传递,因此数组是指针,如对象、函数等。。。您可以使用array.slice返回一个新的数组,但是。数组在javascript中作为引用传递,所以数组是指针,像对象、函数等。。。但是,您可以使用array.slice返回新数组。