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