日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
檢查JavaScript變量是否為數(shù)字的幾種方式

介紹

JavaScript 是一種動(dòng)態(tài)類型的語(yǔ)言,這意味著解釋器是在運(yùn)行時(shí)確定變量類型的。這允許我們可以用同一變量中存儲(chǔ)不同類型的數(shù)據(jù)。但是如果沒(méi)有文檔和保持一致性,在使用代碼時(shí),我們很有可能并不知道變量究竟是哪種類型。

當(dāng)我們打算對(duì)數(shù)字進(jìn)行操作時(shí),如果對(duì)字符串或數(shù)組進(jìn)行操作會(huì)帶來(lái)奇怪的結(jié)果。在本文中,我們將研究可以幫我們確定所用的變量是否為數(shù)字的各種函數(shù)。

字符串形式的數(shù)字例如 "100" 不應(yīng)該被處理,同時(shí)在 JavaScript中 NaN,Infinity 和 -Infinity 之類的特殊值也都是數(shù)字,不過(guò)我們將忽略這些值。

根據(jù)這些要求,最好使用 Number 對(duì)象內(nèi)置 isFinite() 函數(shù)。但是有時(shí)候我們也會(huì)使用其他函數(shù),例如 Number.isNaN() 和 typeof() 等。

首先創(chuàng)建一些測(cè)試變量:

 
 
 
  1. let intVar = 2; 
  2. let floatVar = 10.5; 
  3. let stringVar = '4'; 
  4. let nanVar = NaN; 
  5. let infinityVar = Infinity; 
  6. let nullnullVar = null; 
  7. let undefinedundefinedVar = undefined; 

使用Number.isFinite()函數(shù)

Number.isFinite() 用來(lái)函數(shù)檢查變量是否為數(shù)字,但也用來(lái)檢查其是否為某些特殊值。它在遇到 NaN, Infinity 或者 -Infinity 時(shí)會(huì)返回 false。

接下來(lái)在上面定義的變量上進(jìn)行測(cè)試:

 
 
 
  1. > Number.isFinite(intVar); 
  2. true 
  3. > Number.isFinite(floatVar); 
  4. true 
  5. > Number.isFinite(stringVar); 
  6. false 
  7. > Number.isFinite(nanVar); 
  8. false 
  9. > Number.isFinite(infinityVar); 
  10. false 
  11. > Number.isFinite(nullVar); 
  12. false 
  13. > Number.isFinite(undefined); 
  14. false 

結(jié)果令人滿意。特殊的數(shù)字值以及所有非數(shù)字類型的變量都將會(huì)被忽略。如果想要檢查某個(gè)變量是否為數(shù)字, Number.isFinite() 函數(shù)是最好的選擇。

使用Number.isNaN()函數(shù)

標(biāo)準(zhǔn)的 Number 對(duì)象具有 isNaN() 方法。用來(lái)判斷傳入的參數(shù)值是否為 NaN。由于我們要檢查變量是否為數(shù)字,所以需要在檢查中要使用非運(yùn)算符 !。

現(xiàn)在看看通過(guò)非運(yùn)算符加 Number.isNaN() 函數(shù)能否只過(guò)濾數(shù)字:

 
 
 
  1. > !Number.isNaN(intVar); 
  2. true 
  3. > !Number.isNaN(floatVar); 
  4. true 
  5. > !Number.isNaN(stringVar); 
  6. true # 判斷錯(cuò)誤 
  7. > !Number.isNaN(nanVar); 
  8. false 
  9. > !Number.isNaN(infinityVar); 
  10. true # 判斷錯(cuò)誤 
  11. > !Number.isNaN(nullVar); 
  12. true # 判斷錯(cuò)誤 
  13. > !Number.isNaN(undefinedVar); 
  14. true # 判斷錯(cuò)誤 

這種方法相當(dāng)寬松,因?yàn)樗邮艿闹蹈静皇菙?shù)字。這種方法最適合在你知道自己的值是數(shù)字并且要檢查它是否為 NaN 值的情況下,并不適合常規(guī)數(shù)字的。

使用typeof()函數(shù)

typeof() 函數(shù)是一個(gè)全局函數(shù),它的參數(shù)可以接受變量或值,并返回其類型的字符串表示形式。JavaScript 共有 9 種類型:

  • undefined
  • boolean
  • number
  • string
  • bigint
  • symbol
  • object
  • null (typeof() 顯示為對(duì)象)
  • function (對(duì)象的一種特殊類型)

為了驗(yàn)證變量是否為數(shù)字,我們只需要檢查 typeof() 返回的值是否為 "number"。讓我們嘗試一下測(cè)試變量:

 
 
 
  1. > typeof(intVar) == 'number'; 
  2. true 
  3. > typeof(floatVar) == 'number'; 
  4. true 
  5. > typeof(stringVar) == 'number'; 
  6. false 
  7. > typeof(nanVar) == 'number'; 
  8. true # 判斷錯(cuò)誤 
  9. > typeof(infinityVar) == 'number'; 
  10. true # 判斷錯(cuò)誤 
  11. > typeof(nullVar) == 'number'; 
  12. false 
  13. > typeof(undefined) == 'number'; 
  14. false 

typeof() 函數(shù)比 Number.isNaN() 好得多。它可以正確的判斷 null 和 undefined 不是數(shù)字。但如果是 NaN 和 Infinity,它會(huì)返回 true。

盡管從技術(shù)角度上來(lái)說(shuō)這是正確的,但 NaN 和 Infinity 是特殊的數(shù)字值,我們?cè)诖蠖鄶?shù)情況下都會(huì)忽略它們。

總結(jié)

本文研究了如何檢查 JavaScript 中的變量是否為數(shù)字。

  • 只有在我們知道自己的變量是一個(gè)數(shù)字,并且需要驗(yàn)證它是否為 NaN 時(shí),Number.isNaN() 函數(shù)才適用。
  • 如果你的代碼需要處理 NaN,Infinity 或 -Infinity 及其他數(shù)字時(shí),則 typeof() 函數(shù)是適用的。
  • Number.isFinite() 方法能夠處理特殊數(shù)字,并且最適合我們的要求。

網(wǎng)頁(yè)題目:檢查JavaScript變量是否為數(shù)字的幾種方式
網(wǎng)站URL:http://www.dlmjj.cn/article/dpdjpep.html