世界上最短的數(shù)字判斷js代碼
我們知道JavaScript提供了typeof運(yùn)算符,因此最容易想到的是用typeof來(lái)判斷是否是number類型
function isNumber(obj) { return typeof obj === 'number' }
這個(gè)函數(shù)對(duì)于整數(shù)和浮點(diǎn)數(shù)都沒有問題,但對(duì)于NaN值也返回true這讓人感到不爽,畢竟用isNumber判斷通過后誰(shuí)也不會(huì)用NaN去做算術(shù)運(yùn)算。
那改進(jìn)一下,用Object.prototype.toString
試試
function isNumber(obj) { return Object.prototype.toString.call(obj) === '[object Number]' }
和typeof判斷一樣,對(duì)于NaN也返回true,代碼量還大了,這不是想要的結(jié)果。toString.call方式判斷數(shù)組(Array)可行,數(shù)字則力不從心了。
再改進(jìn)下,NaN值用isNaN函數(shù)來(lái)對(duì)付
function isNumber(obj) { return typeof obj === 'number' && !isNaN(obj) }
這次,如果傳入的是非數(shù)字(NaN或者可轉(zhuǎn)成NaN的值)就返回false了
function isNumber(obj) { return typeof obj === 'number' && !isNaN(obj) } isNumber(1) // true isNumber(1.2) // true isNumber(NaN) // false isNumber( parseInt('a') ) // false
嗯,這個(gè)isNumber不錯(cuò)了,但還有一個(gè)等價(jià)的,用isFinite來(lái)判斷
function isNumber(obj) { return typeof obj === 'number' && isFinite(obj) }
到現(xiàn)在,最短代碼的數(shù)字判斷是此文提到的第三個(gè)使用isNaN函數(shù)的。下面隆重推出世界上最短的數(shù)字判斷代碼
function isNumber(obj) { return obj === +obj }
對(duì)于整數(shù),浮點(diǎn)數(shù)返回true,對(duì)于NaN或可轉(zhuǎn)成NaN的值返回false。
沒看懂是嗎? 咕~~(╯﹏╰)
園友說(shuō)這還不是世界上最短判斷數(shù)字代碼,參數(shù)obj可以改成一個(gè)字符的。(⊙o⊙)你是對(duì)的。
舉一反三,類似的利用JS動(dòng)態(tài)語(yǔ)言特性(運(yùn)算符運(yùn)算時(shí)內(nèi)部自動(dòng)類型轉(zhuǎn)換)最短的判斷還有
// 判斷字符串 function isString(obj) { return obj === obj+'' } // 判斷布爾類型 function isBoolean(obj) { return obj === !!obj }
總結(jié)
以上所述是小編給大家介紹的世界上最短的數(shù)字判斷js代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
鼠標(biāo)右擊事件代碼(asp.net后臺(tái))
本程序由一個(gè)js文件和aspx文件組成,沒有后臺(tái)CS代碼。2011-01-01解決 viewer.js 動(dòng)態(tài)更新圖片導(dǎo)致無(wú)法預(yù)覽的問題
Viewer.js 是一款強(qiáng)大的圖片查看器,這篇文章主要介紹了解決 viewer.js 動(dòng)態(tài)更新圖片導(dǎo)致無(wú)法預(yù)覽的問題 ,需要的朋友可以參考下2019-05-05jQuery右下角旋轉(zhuǎn)環(huán)狀菜單特效代碼
jquery實(shí)現(xiàn)右下角旋轉(zhuǎn)環(huán)形菜單特效代碼,是固定在頁(yè)面右下角位置,當(dāng)用戶點(diǎn)擊了主菜單按鈕后,子菜單項(xiàng)會(huì)以環(huán)狀旋轉(zhuǎn)進(jìn)入頁(yè)面,并使用animate.css制作動(dòng)畫效果,有需要的朋友可以參考下2015-08-08解決layer 關(guān)閉當(dāng)前彈窗 關(guān)閉遮罩層 input值獲取不到的問題
今天小編就為大家分享一篇解決layer 關(guān)閉當(dāng)前彈窗 關(guān)閉遮罩層 input值獲取不到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-09-09