var arr = ["d","b","c"]
var a1 = arr
arr.sort()
arr = ["a","b","w"]
console.log(a1) //printing [ 'b', 'c', 'd' ]
在上面的代碼片段中,.sort()操作在打印a1時得到反映。但是,當我重新分配arr時,爲什麼a1在打印時不是指新的值?爲什麼以下Javascript代碼片段的行爲如此?
var arr = ["d","b","c"]
var a1 = arr
arr.sort()
arr = ["a","b","w"]
console.log(a1) //printing [ 'b', 'c', 'd' ]
在上面的代碼片段中,.sort()操作在打印a1時得到反映。但是,當我重新分配arr時,爲什麼a1在打印時不是指新的值?爲什麼以下Javascript代碼片段的行爲如此?
var arr = ["d","b","c"]
arr
的值以該數組var a1 = arr
arr
到a1
值,現在這兩個變量保持對這個數組的引用arr.sort()
arr = ["a","b","w"]
arr
的值以該數組a1
是未修飾的參考,其值仍然是第一陣列
你重新分配ARR的引用,不A1。這對我來說很明顯。 JS中的變量不會像指針一樣行事。有基礎研究的 – nicovank
你可以找到答案。 – Belfordz
這是編程的基礎:值和參考。 'a1 = arr'表示您將arr的引用賦值爲變量a1的值。因此,所有發生在a1上的事情都會影響到arr,因爲它們指向相同的值。 (數組[d,b,c])。 – Kai