成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

記一次js的坑

QiuyueZhong / 1935人閱讀

摘要:問題把一個(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

相關(guān)文章

  • 一次Validform.js表單提交踩的坑

    摘要:剛進(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)...

    hss01248 評論0 收藏0
  • 【踩坑記錄】一次MySQL主從復(fù)制延遲的坑

    摘要:最近開發(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ā)審批,審...

    cartoon 評論0 收藏0
  • 「Do.012」一次mac版AS3.1升級的坑

    摘要:首發(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程序...

    Anleb 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<