根據(jù)javascript高程第四章? 變量、作用域和內(nèi)存問(wèn)題
4.1 基本類(lèi)型和引用類(lèi)型的值
1)基本類(lèi)型值指的是簡(jiǎn)單的數(shù)據(jù)段(Undefined、Null、Boolean、Number 和 String)
2)引用類(lèi)型值指那些可能由多個(gè)值構(gòu)成的對(duì)象(object,array)


我們?cè)谧鲰?xiàng)目的時(shí)候經(jīng)常會(huì)遇到把一份數(shù)據(jù)copy出來(lái),以備后面使用的情況。
有一個(gè)數(shù)組? arr = [1, 2, 3, 4, 5]。?
let subArr = [];
subArr?= arr;?
然后我們以為subArr就可以隨便操作啦?其實(shí)并不是這樣的,數(shù)組arr的引用賦給subArr,所以改變str也會(huì)改變subArr?
比如?subArr.push(6)
console.log(arr) //?[1, 2, 3, 4, 5, 6]
console.log(subArr) // [1, 2, 3, 4, 5, 6]
好了嗶嗶了那么久,下面總結(jié)了兩個(gè)復(fù)制數(shù)組(返回新的數(shù)組)的方法:?
1、subArr = [].concat(arr);?
w3c解釋?zhuān)?arrayObject.concat(arrayX,arrayX,......,arrayX)
返回一個(gè)新的數(shù)組。該數(shù)組是通過(guò)把所有 arrayX 參數(shù)添加到 arrayObject 中生成的。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素,而不是數(shù)組
2、subArr = arr.slice(0);?
w3c解釋?zhuān)?arrayObject.slice(start,end)? slice接收兩個(gè)參數(shù)
返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。