日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript之旅——第四站:parseInt中要注意的坑

發布時間:2024/4/14 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript之旅——第四站:parseInt中要注意的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Javascript之旅——第四站:parseInt中要注意的坑 原文:Javascript之旅——第四站:parseInt中要注意的坑

?

  前些天信用卡站點要接入一個新功能,不過還真比較坑爹,asp站點,大家都知道信用卡的背面是有一個有效期的,在對接銀行中這個信息

一定是要傳給銀行做數據校驗,用戶在語音輸入信用卡有效期后,系統會做一個有效期判斷,為了不必要的麻煩,就是判斷過期時間一定不能在

一個月內,由于輸入的年月日在三個文本框中,再加上我嫌轉成時間麻煩,就索性直接拿年,月,日的文本內容直接強轉成int類型來判斷,此為

背景。

  說了這么多,終于說到文章主題了,我們知道有效期有這樣的:2015-09-20,我就毫不猶豫的從月文本框中拿出了"09",然后屁顛屁顛的

在chrome下做了如下轉換,很開心,搞定。

?

  下午測試小妹妹反饋過來說,信用卡有效期判斷有問題,比較詫異,在自己機器上怎么試都沒有問題,然后沒轍,只能親自去小妹妹桌上看

看,順便搽點油,開著IE調試器調試了下,果然,靈異事件發生了,現在終于找到問題所在了。

?

  當時測試小妹妹裝的是IE8,然后在IE8下面parseint默認會把我的“09”當成八進制,但是又發現不是合法的八進制,最后就拋出了0這個false

,我們也看到在chrome下,“09”會默認當做十進制來看的,所以js引擎會理所當然的轉化成了9這個我滿意的結果,所以嘛,IE真的是不按照人的

常理出牌,現在我們該如果解決呢?

?

一:解決方案

<1> 剛才討論中也發現了,parseInt在不同的瀏覽器下有不同的默認行為處理,沒轍,又看不到parseint底層是怎么處理的,只能去找javascript

的api文檔這個黑盒去看一看,然后就發現一個讓我很驚喜的radix參數。

  

? ? 知道了這個radix,問題就可以迎刃而解了,現在我只需指定下radix=10即可,如圖:

?

不過后來發現在IE9下面,parseint在缺失radix的時候底層也是默認采用十進制的,終于微軟為了符合大眾口味做了正確的修改。

?

<2>除了parseint這個函數,其實還有一個Number函數也可以幫你解決這個問題,并且在IE7,8上面都是沒有問題的,由于在js中,如果你

去new?一下這個Number的話,那就可以生成Number對象了,這一點和C#有一些區別,所以下面我可以用兩種方式看一下。

?

這個Number的好處在于只會處理十進制數值,而且還有其他特殊的玩法,不像parseint只接受string的參數,number可以接受任何類型,比如:

由于看不到Number底層的源碼,所以針對這些問題,我們也只能道聽途說來記住了,這也是JS與其他托管語言不一樣的地方。

?

posted on 2015-01-16 14:32 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/4228654.html

總結

以上是生活随笔為你收集整理的Javascript之旅——第四站:parseInt中要注意的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。