詳解Js中的Number

Number

JavaScript的Number類型為雙精度IEEE 754 64位浮點類型。 數(shù)值范圍包括 -2^53到2^53。在JavaScript中正數(shù)0和負數(shù)0是相等的。
注意:當(dāng)數(shù)值超過number所能表示的范圍值的時候,則會被自動轉(zhuǎn)換成Infintity(正無窮)或-Infintity(負無窮)。此時將無法正常進行數(shù)學(xué)運算。為此提供了一個新的基礎(chǔ)數(shù)據(jù)類型BigInt

屬性、方法 作用
Number.MIN_SAFE_INTEGER number所表示的最小值
Number.MAX_SAFE_INTEGER number所表示的最小值
Number.isNaN() 檢查值是否是一個有效數(shù)字
Number.isFinite() 檢查值是否是一個又窮數(shù)

isNaN
在使用isNaN進行檢測的時候,如果檢測的值是非數(shù)字類型的值,則需要先把其轉(zhuǎn)換為數(shù)字類型,然后在進行檢測 把其它數(shù)據(jù)類型轉(zhuǎn)換為數(shù)字類型

                // console.log(isNaN(1)); //=>false
        // console.log(isNaN(NaN)); //=>true
        // console.log(isNaN(Infinity)); //=>false

        // console.log(isNaN('AA')); //=>true
        // console.log(isNaN('12.5')); //=>false
        // console.log(isNaN('12.5px')); //=>true
        // console.log(isNaN([])); //=>false
        // console.log(isNaN([10])); //=>false
        // console.log(isNaN([10, 20])); //=>true
        // console.log(isNaN({})); //=>true
        // console.log(isNaN(null)); //=>false
        // console.log(isNaN(undefined)); //=>true
        // console.log(isNaN(Symbol(1))); //=>報錯

三種轉(zhuǎn)換數(shù)字類型的方式

Number()

Number是JS內(nèi)置的轉(zhuǎn)換方法,可以把其它數(shù)據(jù)類型“強制”轉(zhuǎn)換為數(shù)字類型

  • 把字符串轉(zhuǎn)換為數(shù)字:一但字符串中出現(xiàn)非有效數(shù)字字符,則結(jié)果為NaN,只有都是有效數(shù)字字符,才能轉(zhuǎn)換為具體的數(shù)字,空字符串會轉(zhuǎn)換為0
  • 把布爾轉(zhuǎn)換為數(shù)字:true轉(zhuǎn)換為1 false轉(zhuǎn)換為0
  • 把空轉(zhuǎn)換為數(shù)字:null轉(zhuǎn)換為0 undefined轉(zhuǎn)換為NaN
  • 不能把Symbol類型轉(zhuǎn)換為數(shù)字,否則會報錯
  • 對象轉(zhuǎn)換為數(shù)字:先把對象轉(zhuǎn)換為字符串,再把字符串轉(zhuǎn)為數(shù)字
    • 普通對象
    • 數(shù)組對象
    • 其余對象格式基本上都會變?yōu)閿?shù)字NaN
  • 函數(shù)轉(zhuǎn)換為數(shù)字:結(jié)果都是NaN
                // console.log(Number('12')); //=>12
        // console.log(Number('12.5')); //=>12.5
        // console.log(Number('12px')); //=>NaN
        // console.log(Number('12.5.0')); //=>NaN
        // console.log(Number(true)); //=>1
        // console.log(Number(false)); //=>0
        // console.log(Number(null)); //=>0
        // console.log(Number(undefined)); //=>NaN
        // console.log(Number(Symbol(13))); //=>Cannot convert a Symbol value to a number
        // console.log(Number(function func() {}));

parseInt() / parseFloat()

他們是把字符串轉(zhuǎn)換為數(shù)字類型(如果處理的值不是字符串,需要先轉(zhuǎn)換為字符串然后在去轉(zhuǎn)換為number類型的)
從字符串最左邊開始查找,把找到的有效數(shù)字字符轉(zhuǎn)換為數(shù)字,一直遇到一個非有效數(shù)字字符為止,則結(jié)束查找
parseFloat比parseInt多識別一個小數(shù)點

                // console.log(Number('12px')); //=>NaN
        // console.log(parseInt('12px')); //=>12
        // console.log(parseInt('12px24')); //=>12
        // console.log(parseInt('width:12px')); //=>NaN
        // console.log(parseInt('12.5px')); //=>12
        // console.log(parseFloat('12.5px')); //=>12.5  parseFloat比parseInt多識別一個小數(shù)點

        // console.log(Number(true)); //=>1
        // console.log(parseInt(true)); //=>先把TRUE轉(zhuǎn)換為字符串"TRUE"  parseInt('true') =>NaN
        // console.log(parseInt(NaN)); //=>NaN
        // console.log(Number(null)); //=>0
        // console.log(parseInt(null)); //=> parseInt('null') =>NaN
        // console.log(isNaN(Number(parseInt("0.8")))); //=>parseInt("0.8")->0   Number(0)->0  isNaN(0)->false

        // console.log(Number('')); //=>0
        // console.log(parseInt('')); //=>NaN
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 前言 眾所周知, js 是一門弱類型或者說是動態(tài)語言。變量沒有類型限制,可以隨時賦予任意值。 雖然變量的數(shù)據(jù)類型是...
    更替客戶閱讀 339評論 0 0
  • 全面認識JavaScript的Number對象 首先一個是對JavaScript中Number的理解:JavaSc...
    皮皮坤666閱讀 819評論 0 0
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,268評論 0 4
  • 最近開始學(xué)習(xí)的JS,做這個筆記只是為了記錄一下自己的學(xué)習(xí)情況,也算是督促自己每天多看點書。基本都是書上的內(nèi)容整理了...
    丨ouo丨閱讀 294評論 2 1
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 1,329評論 0 15