第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在JavaScript中驗(yàn)證十進(jìn)制數(shù) - IsNumeric()

在JavaScript中驗(yàn)證十進(jìn)制數(shù) - IsNumeric()

在JavaScript中驗(yàn)證十進(jìn)制數(shù) - IsNumeric()在JavaScript中驗(yàn)證十進(jìn)制數(shù)的最干凈,最有效的方法是什么?獎(jiǎng)勵(lì)積分:明晰。解決方案應(yīng)該干凈簡(jiǎn)單。跨平臺(tái)。測(cè)試用例:01. IsNumeric('-1')      => true02. IsNumeric('-1.5')    => true03. IsNumeric('0')       => true04. IsNumeric('0.42')    => true05. IsNumeric('.42')     => true06. IsNumeric('99,999')  => false07. IsNumeric('0x89f')   => false08. IsNumeric('#abcdef') => false09. IsNumeric('1.2.3')   => false10. IsNumeric('')        => false11. IsNumeric('blah')    => false
查看完整描述

4 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

Arrrgh!不要聽正則表達(dá)式的答案。RegEx對(duì)此很苛刻,我不只是說性能。用你的正則表達(dá)式來制作微妙的,不可能發(fā)現(xiàn)錯(cuò)誤是如此容易。

如果你不能使用isNaN(),這應(yīng)該更好:

function IsNumeric(input){
    return (input - 0) == input && (''+input).trim().length > 0;}

以下是它的工作原理:

(input - 0)表達(dá)式強(qiáng)制JavaScript對(duì)您的輸入值進(jìn)行類型強(qiáng)制; 必須首先將其解釋為減法運(yùn)算的數(shù)字。如果轉(zhuǎn)換為數(shù)字失敗,則表達(dá)式將導(dǎo)致NaN。然后將此數(shù)字結(jié)果與您傳入的原始值進(jìn)行比較。由于左側(cè)現(xiàn)在是數(shù)字,因此再次使用類型強(qiáng)制。既然來自雙方的輸入都是從相同的原始值強(qiáng)制轉(zhuǎn)換為相同的類型,那么您會(huì)認(rèn)為它們應(yīng)該始終相同(始終為真)。但是,有一個(gè)特殊規(guī)則說NaN永遠(yuǎn)不會(huì)等于NaN,因此無(wú)法轉(zhuǎn)換為數(shù)字的值(并且只有無(wú)法轉(zhuǎn)換為數(shù)字的值)將導(dǎo)致錯(cuò)誤。

檢查長(zhǎng)度是針對(duì)涉及空字符串的特殊情況。另請(qǐng)注意,它會(huì)降低到您的0x89f測(cè)試,但這是因?yàn)樵谠S多環(huán)境中,定義數(shù)字文字是一種可行的方法。如果要捕獲該特定方案,可以添加其他檢查。更好的是,如果這是你不使用的原因,isNaN()那么只需將自己的功能包裹起來isNaN(),也可以進(jìn)行額外的檢查。

總之,如果您想知道某個(gè)值是否可以轉(zhuǎn)換為數(shù)字,實(shí)際上會(huì)嘗試將其轉(zhuǎn)換為數(shù)字。


我回去做了一些研究,為什么空白字符串沒有預(yù)期的輸出,我想我現(xiàn)在得到它:一個(gè)空字符串被強(qiáng)制0而不是NaN。在長(zhǎng)度檢查之前簡(jiǎn)單地修剪字符串將處理這種情況。

運(yùn)行單元測(cè)試新代碼,它只在無(wú)限和布爾文字上失敗,唯一應(yīng)該是問題的時(shí)候是你生成代碼(真的,誰(shuí)會(huì)輸入文字并檢查它是否是數(shù)字?你應(yīng)該知道),這將是一些奇怪的代碼生成。

但是,再一次,使用它的唯一原因是,如果由于某種原因你必須避免使用isNaN()。


查看完整回答
反對(duì) 回復(fù) 2019-05-24
  • 4 回答
  • 0 關(guān)注
  • 1170 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)