js字符串轉數字

今天寫代碼的時候遇到一個問題,獲取了一個span元素的值,但是+1的時候卻出現了25+1=251的情況。原來是獲取的值為字符串,所以對字符串進行了拼接。

我又翻了翻js高程,仔細看了看關于字符串,數字,布爾值的互相轉換問題,這里先介紹字符串轉數字。

js里有三種方法可以完成字符串轉數字,分別是

  • Number()
  • parseInt()
  • parseFloat()

那么它們有什么區(qū)別呢?

  1. Number()
  • 如果字符串只包含數字,則將其轉換為十進制數值,即 "123" 會變成 123
  • 如果字符串包含十六進制格式,例如 "0xf" ,則將其轉換為相同大小的十進制整數值
  • 如果字符串為空,轉換為 0
  • 如果是上述格式之外的字符,轉換為 NaN
    例如
var num1 = Number("Hello world!");      //NaN
var num2 = Number("");                  //0
var num3 = Number("000011");            //NaN
  1. parseInt()
    由于Number()處理字符串比較復雜且不夠合理,所以處理整數常用 parseInt()
    parseInt() 轉換字符的時候,會識別字符是否符合數值模式,它會忽略字符串前面的空格,從第一個非空格字符開始解析,如果是非數字符號或正負號,則返回 NaN 。如果第一個非空字符是數字符號或正負號,那么會繼續(xù)解析,直到解析完或遇到非數字符號,比如 1234blue 會被轉換成 1234, 但是需要注意的是,小數點并不算是數字符號,所以 22.5 會被解析為 22。同時也能解析八進制或十六進制的數。
    例如
var num1 = parseInt("1234blue");      //1234
var num2 = parseInt("");              //NaN
var num3 = parseInt("22.5");          //22
var num4 = parseInt("070");           //56(八進制數)
var num5 = parseInt("0xf");           //15(十六進制數)

另外一點,由于 parseInt() 在解析八進制數字的時候,ECMAScript3和5存在分歧,所以 parseInt() 可以制定兩個參數,即轉換的進制,比如

var num1 = parseInt("AF", 16);      //175
var num2 = parseInt("AF");          //NaN
var num3 = parseInt("10", 2);       //2(按二進制解析)
var num4 = parseInt("10", 8);       //8(按八進制解析)
var num5 = parseInt("10", 10);      //10(按十進制解析)
var num6 = parseInt("10", 16);      //16(按十六進制解析)
  1. parseFloat()
    parseInt() 類似,也是從第一個字符開始解析,但是小數點是有效的,因為 parseFloat() 解析的不是數字符號,而是浮點數字字符,但第二個小數點就無效了。比如 "22.34.5" 會背轉換為 22.34
    需要注意的是 parseFloat() 只能解析十進制的數字。
    例如
var num1 = parseFloat("1234blue");      //1234
var num2 = parseFloat("22.5");          //22.5
var num3 = parseFloat("22.34.5");       //22.34
var num4 = parseFloat("0xA");           //0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • JS使用技巧專題 1開發(fā)技巧 1.1函數使用 1.1.1函數聲明方式 JS函數的寫法總結 http://blog....
    Kevin_Junbaozi閱讀 1,178評論 0 11
  • 變量 聲明變量 命名變量區(qū)分大小寫的語言第一個字符是字母或下劃線_,數字不能作為第一個字符字符必須是字母,數字或者...
    flyingtoparis閱讀 885評論 0 0
  • 第三章 基本概念 3.1 語法 ECMAScript標識符一般采用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個...
    小雄子閱讀 655評論 0 1
  • 第三章 基本概念 本章基本內容 語法 數據類型 流控制語句 理解函數 (一)語法 區(qū)分大小寫在JS里面變量,函數名...
    我擁抱著我的未來閱讀 504評論 0 0
  • 親愛的我決定給你寫信,除你之外,我找不到任何可訴說而不引起厭倦的人。
    薄日閱讀 130評論 1 1

友情鏈接更多精彩內容