摘要:問題把一個的數(shù)組轉換成很自然的,我們會這么寫但這卻得不到我們想要的結果,會變成但如果我們給這個函數(shù)包一下,得到的卻是正確的結果。所以,第一種寫法結果是符合的預期的,雖然他不符合我們的預期。
問題:
把一個["1", "2", "3"]的數(shù)組轉換成[1,2,3]
很自然的, 我們會這么寫:
["1","2", "3"].map(parseInt);
但這卻得不到我們想要的結果, 會變成
[1, NaN, NaN]
但如果我們給parseInt這個函數(shù)包一下,
["1","2", "3"].map(function(n){ return parseInt(n)});
得到的卻是正確的結果。
下面就是要講一下為什么?
事實上, 第一種寫法, 放了2個錯誤:
在js中, map實際上調用的函數(shù)是一個多參數(shù)函數(shù), 即function(value, index, array), 更詳細的說明是MDN的說明:
> callback is invoked with three arguments: the value of the element, the index of the element, and the Array object being traversed.
也就是說, 第一種寫法實際上是這樣的:
["1","2","3"].map(function(value,index,array){ return parseInt(value, index, arrary); });
然后這里涉及到第二個錯誤了。
parseInt也是一個多參數(shù)函數(shù);具體定義是parseInt(string, radix);, radix就是進制, MSD還強調Always specify this parameter to eliminate reader confusion and to guarantee predictable behavior.
根據(jù)上面展開的函數(shù), 在對"1"執(zhí)行的是parseInt("1", 0);, 這里要注意, js中會把多余的參數(shù)給忽略了~
但radix參數(shù)是零的時候, 他會根據(jù)第一個string來做判斷, 這里是當十進制了。 所以執(zhí)行成功。
接下的"2"肯定就錯啦, radix不能是1進制。
那 parseInt("3", 2);為什么錯, 不是有2進制么? 你見過2進制中有3的么。。。
所以, 第一種寫法結果是符合js的預期的, 雖然他不符合我們的預期。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78126.html
摘要:剛進公司實習不久,最近公司有一個需求做一個的頁面,利用傳過來的參數(shù)來顯示不同的表單內(nèi)容,不同的表單提交的內(nèi)容也就不一樣。 剛進公司實習不久,最近公司有一個需求,做一個h5的頁面,利用傳過來的url參數(shù)來顯示不同的表單內(nèi)容,不同的表單提交的內(nèi)容也就不一樣。 雖然我剛拿到也覺得so easy,但是就是這個簡單的東西也踩了很多坑,記錄下來,不再懵逼。 1 隱藏的表單元素的value也會被默認...
摘要:最近開發(fā)中遇到的一個主從延遲的坑,記錄并總結,避免再次犯同樣的錯誤。運行時查詢?yōu)榭眨瑘?zhí)行完畢后查詢時內(nèi)容存在,初步懷疑是主從延遲問題。報錯只是部分失敗,確定是主從延遲的問題。接下來,會去學習主從復制的原理,敬請期待。 最近開發(fā)中遇到的一個MySQL主從延遲的坑,記錄并總結,避免再次犯同樣的錯誤。 情景 一個活動信息需要審批,審批之后才能生效。因為之后活動要編輯,編輯后也可能觸發(fā)審批,審...
摘要:首發(fā)公眾號程序員日記作者賢榆的榆如果你覺得有幫助歡迎關注贊賞轉發(fā)閱讀時間字分鐘注先簡述一下時間線月日周日上午拿到新的下午裝好系統(tǒng)晚上從舊的上遷移數(shù)據(jù)到新。到月號還沒有修復,官方也還沒有任何關于這方面的恢復。 showImg(https://segmentfault.com/img/remote/1460000016418427?w=690&h=365); 首發(fā)公眾號:Android程序...
閱讀 3046·2021-09-22 14:59
閱讀 1879·2021-09-22 10:02
閱讀 2116·2021-09-04 16:48
閱讀 2265·2019-08-30 15:53
閱讀 2971·2019-08-30 11:27
閱讀 3410·2019-08-29 18:35
閱讀 966·2019-08-29 17:07
閱讀 2676·2019-08-29 13:27