鍍金池/ 問答/數(shù)據(jù)分析&挖掘  HTML/ 一個(gè)關(guān)于數(shù)組的問題

一個(gè)關(guān)于數(shù)組的問題

        function makeRow(v=0){
            const array = new Array(3);
            array.fill(v);
            return array;
        }

        function makeMatrix(v = 0){
            const array = new Array(3)
            array.fill(makeRow(v))

            return array;
        }

        const a = makeMatrix()
        a[0][1]=2
        console.log(a)
        /*
        [
          [0,2,0],
          [0,2,0],
          [0,2,0]
        ]
        */
        

如上代碼,為什么我只操作了 a的第0項(xiàng),但結(jié)果是每項(xiàng)都被改變了
求大神解答

回答
編輯回答
失魂人

因?yàn)槟阒籱akeRow了一次,矩陣中的每一“行” 都引用了同一個(gè)數(shù)組,你改矩陣中的值就相當(dāng)于改 “行” 中的一個(gè)

2017年12月5日 20:24
編輯回答
愚念

數(shù)組是引用類型。makeRow(v)返回的實(shí)際上是const array = new Array(3);這個(gè)array在內(nèi)存中的地址,fill方法將這個(gè)地址取了三遍,所以無(wú)論改哪個(gè),3個(gè)都會(huì)改變。

2018年5月29日 18:47