JS 不常見的坑,解決辦法記錄

2021-09-28 16:11:30 字數 1194 閱讀 1269

**情況:

var arr =[1

,2,3

,4];

var arrone = arr;

var arrtwo = arr;

arrone.

splice(2

,1);

console.

log(arr)

;// [1,2,4]

console.

log(arrone)

;// [1,2,4]

console.

log(arrtwo)

;// [1,2,4]

原因:

js 中的值分為數值型別,和引用型別(摘抄),這個問題是由於引用型別出現的問題。引用型別如果沒有了解可以大致理解為:多個支付寶繫結了同一張銀行卡,當其中乙個賬號使用了該銀行卡的金額時,也代表著其它賬號可支配這個銀行卡的金額出現變動。

所以,上面的問題也是一樣的。找到原因,那麼就開始解決問題了,那麼可以思考如何將引用型別(淺拷貝),改為深拷貝?

解決方法:

賦值時可以通過 slice 方法獲取返回值,進行賦值,實現深拷貝,複製值,而不是引用值。當然還有其它方法,歡迎提醒。

ar arr =[1

,2,3

,4];

// slice(starposition[,endposition])

/* function: 擷取從 starposition 索引位置開始,到 endposition 索引位置結束的元素返回。

starposition int 必須 擷取的開始位置

endposition int 可選 擷取的結束位置

*/var arrone = arr.

slice(0

);var arrtwo = arr;

arrone.

splice(2

,1);

console.

log(arr)

;// [1,2,3,4]

console.

log(arrone)

;// [1,2,4]

console.

log(arrtwo)

;// [1,2,3,4]

JS 除錯中常見的報錯的解決辦法

報錯 uncaught syntaxerror unexpected token o in json at position 1 翻譯 不能捕獲的語法錯誤 json資料位置0處發現不能識別的標記 原因 json格式錯誤 返回資料 語句用echo json encode data,true 但是用了e...

JS 除錯中常見的報錯的解決辦法

報錯 uncaught syntaxerror unexpected token o in json at position 1 翻譯 不能捕獲的語法錯誤 json資料位置0處發現不能識別的標記 原因 json格式錯誤 返回資料 語句用echo json encode data,true 但是用了e...

解決TIME WAIT狀態常見的解決辦法

time wait狀態 伺服器中保持大量的time wait是很不好的事情,它可能會導致伺服器暫時處理不了新的鏈結,作業系統中提供的檔案描述符是在一定數量的,多出來的請求連線,是無法分配的。在linux下使用下面的命令可以檢視當時系統中所維持的tcp狀態資訊。netstat n awk tcp en...