Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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_Operators_Pass By Reference - Fatal编程技术网

Javascript-通过引用传递变量问题

Javascript-通过引用传递变量问题,javascript,operators,pass-by-reference,Javascript,Operators,Pass By Reference,我试图复制一个javascript数组,并在不修改原始变量的情况下修改“副本”,有人能解释我做错了什么吗 e、 g 我试图使array2仅包含数组中的一项&array1将包含数组中的两项。知道我做错了什么吗?为了创建数组的副本,而不是指定参考值,可以使用该方法 Slice将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)使用Slice()复制数组 var array1 = [2, 5]; var array2 = ''; array2 = array1.slic

我试图复制一个javascript数组,并在不修改原始变量的情况下修改“副本”,有人能解释我做错了什么吗

e、 g


我试图使
array2
仅包含数组中的一项&
array1
将包含数组中的两项。知道我做错了什么吗?

为了创建数组的副本,而不是指定参考值,可以使用该方法

Slice将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)

使用
Slice()
复制数组

    var array1 = [2, 5];
    var array2 = '';

    array2 = array1.slice(0);
    array2.pop();
    console.log(array1);
    console.log(array2);
slice不改变原始数组,但返回一个新的“一级” “深度”副本,其中包含从 原始数组


更改行
array2=array1至:

array2 = array1.slice(0);
Slice方法将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)


我希望这会有所帮助。

它与使用slice函数一样简单:

var array1 = [2, 5];
var array2 = '';

array2 = array1.slice();
array2.pop();
console.log(array1);
console.log(array2);

这里告诉javascript获取array1中元素的副本,并将结果分配给array2。如果不设置开始和结束位置,它将对整个阵列进行切片。

编写此文件时

array2 = array1 //It creates reference on array1 object
array2.pop()  // removes 5 from both end
因此您必须通过slice()方法将一个数组克隆到另一个数组---

array2 = array1.slice(0) // cloning array1 's  element  to array2
array2.pop() //  removes 5 from only array2 not from array1

现在工作正常

array2=array1.slice(1);-这似乎对我使用1而不是0有效,这是否仍然正确(很抱歉提出了noob问题):@Zabs你不必为提出问题而道歉:)这就是这个网站的目的。如果使用
.slice(1)
它将返回
数组1的一个切片,该切片不包含位置0处的元素。谢谢你+1说明:)
array1
为参考
array2
array1
都是引用(指向对象的指针)。如果我写array2=array1,这意味着,array2-->array1-->[2,5],那么每当我们从array2弹出项,这意味着它从array1弹出项,这就是为什么从两个端点都弹出5。阵列2-->[2,5]
array2 = array1 //It creates reference on array1 object
array2.pop()  // removes 5 from both end
array2 = array1.slice(0) // cloning array1 's  element  to array2
array2.pop() //  removes 5 from only array2 not from array1