Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 - Fatal编程技术网

Javascript 为什么数组中的多重赋值是这样的?

Javascript 为什么数组中的多重赋值是这样的?,javascript,arrays,Javascript,Arrays,我用这个方法创建了一个带有初始值设定项的一维数组,当我用这个方法创建多维数组时,我给这个多维数组分配了一个元素,如图所示,我把这个元素分配给数组的每个元素,这是怎么发生的 Array.dim=function(dimensions,init){ var a=[],i; for(i=0;i<dimensions;i++){ a[i]=init; } return a;} var p=Array.dim(20,0

我用这个方法创建了一个带有初始值设定项的一维数组,当我用这个方法创建多维数组时,我给这个多维数组分配了一个元素,如图所示,我把这个元素分配给数组的每个元素,这是怎么发生的

     Array.dim=function(dimensions,init){
     var a=[],i;
     for(i=0;i<dimensions;i++){
     a[i]=init;
       }
  return a;}   
         var p=Array.dim(20,0);
 p
(20) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

   var p=Array.dim(10,[]);

    p[0][0]=0;

   (10) [Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1)]
 0: [0]
 1: [0]
 2: [0]
 3: [0]
 4: [0]
 5: [0]
 6: [0]
 7: [0]
 8: [0]
 9: [0]
 length: 10
 __proto__: Array(0)
Array.dim=函数(维度,初始){
var a=[],i;

对于(i=0;i您移交了一个数组引用,并且每个项都对给定数组共享相同的对象引用

您可以使用一个函数,为每个调用返回一个新数组

Array.dim=函数(维度,初始){
变量a=[],
我
对于(i=0;i[]);
q[0][0]=0;
控制台日志(p);

console.log(q);
因为
a[i]
总是指向
init
。数组中填充了对空数组的相同引用,因此p中的所有数组元素都指向相同的数组引用,因此每个项都显示相同的引用,即成为[0]。简言之,p[0][0]与点[0][1]相同依此类推,因为两者都指向
init