Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript全局变量作用域/拼接时覆盖_Javascript_Arrays_Splice - Fatal编程技术网

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)
  • 然后返回数据数组
e、 g

  • 我理解上面有一些糟糕的代码,这更能说明问题

我遇到的问题是,据我所知,唯一设置
\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返回新数组。