3 回答

TA貢獻1798條經驗 獲得超7個贊
基本上你用一個新數組
let output = [];
然后將新數組分配給參數arr
arr = output;
現在您有兩個對象引用,一個arr是外部作用域,另一個是新的output.
為了克服這個問題,您需要保留 的對象引用array。要在現有數組中獲取新內容,您可以清空數組并推送新數組的值。
arr.length = 0;
arr.push(...output);

TA貢獻1860條經驗 獲得超9個贊
當你這樣做時,arr = output
你reverseArr
指的是一個新數組。換句話說,arrayValue
在外部上下文中并arr
指的是兩個不同的對象。
您無法更改調用該函數所使用的變量的值。如果你有一個對象的引用,你可以改變它,但你不能讓外部變量引用另一個對象。

TA貢獻1804條經驗 獲得超8個贊
基本上,您的第一個函數就地反轉列表(即直接對列表本身進行操作,而不構建新列表),而第二個函數通過構建內容相反的新列表來異地反轉列表的原始列表。
就地工作時,您在array
函數內部所做的更改將直接應用于arrayValue
.
無法按您預期的方式工作的原因arr = output
幾乎與其他答案所指的相同。即,arr
和arrayValue
是兩個不同的引用(“指針”)。最初,當調用該函數時,arrayValue
和都arr
“指向”同一個數組。然而,arr = output
它arr
指向新建的列表output
。
添加回答
舉報