首頁 > web前端 > js教程 > 為什麼 `parseInt` 與 `Array#map` 一起使用時回傳 `NaN`?

為什麼 `parseInt` 與 `Array#map` 一起使用時回傳 `NaN`?

DDD
發布: 2024-12-14 15:02:12
原創
663 人瀏覽過

Why Does `parseInt` Return `NaN` When Used with `Array#map`?

為什麼 parseInt 使用 Array#map 回傳 NaN?

Mozilla 開發者網路指出 [1,4,9].map( Math.sqrt) 回傳 [1,2,3]。但是,將 parseInt 應用於帶有 map 的陣列文字 ['1','2','3'] 會產生 [1, NaN, NaN]。此行為發生在 Firefox 3.0.1 和 Chrome 0.3 中。

根本原因

map 中的回調函數有三個參數:元素的值、它的索引和遍歷的陣列物件。當在映射中呼叫 parseInt 時,索引成為第二個參數,它將其解釋為基數(正在轉換的數字系統的基數)。

在上述情況下,使用基數 0 呼叫 parseInt 、 1 和 2 分別。對於不帶前導零的整數,預設基數為 10。但是,基數 1 無效,基數 2 不支援數字 3。因此,parseInt 對於第二個和第三個元素傳回 NaN。

解決方案

至為了修正這個問題,可以使用包裝函數:

或者,在ES2015 :

或者,在ES2015 :

透過明確提供基數為10,我們確保parseInt正確地將字串解釋為以 10 為基數的整數。

以上是為什麼 `parseInt` 與 `Array#map` 一起使用時回傳 `NaN`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板