JavaScript中判断整字类型最简洁的实现方法


Posted in Javascript onNovember 08, 2014

我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是number类型。

function isNumber(obj) {

    return typeof obj === 'number'

}

这个函数对于整数和浮点数都没有问题,但对于NaN值也返回true这让人感到不爽,毕竟用isNumber判断通过后谁也不会用NaN去做算术运算。

那改进一下,用Object.prototype.toString试试。

function isNumber(obj) {

    return Object.prototype.toString.call(obj) === '[object Number]'

}

和typeof判断一样,对于NaN也返回true,代码量还大了,这不是想要的结果。toString.call方式判断数组(Array)可行,数字则力不从心了。

再改进下,NaN值用isNaN函数来对付。

function isNumber(obj) {

    return typeof obj === 'number' && !isNaN(obj)

}

这次,如果传入的是非数字(NaN或者可转成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

嗯,这个isNumber不错了,但还有一个等价的,用isFinite来判断

function isNumber(obj) {

    return typeof obj === 'number' && isFinite(obj)    

}

到现在,最短代码的数字判断是此文提到的第三个使用isNaN函数的。下面隆重推出世界上最短的数字判断代码

function isNumber(obj) {

    return obj === +obj

}

对于整数,浮点数返回true,对于NaN或可转成NaN的值返回false。

没看懂是吗? 咕~~(???)

园友说这还不是世界上最短判断数字代码,参数obj可以改成一个字符的。(⊙o⊙)你是对的。

举一反三,类似的利用JS动态语言特性(运算符运算时内部自动类型转换)最短的判断还有。

// 判断字符串

function isString(obj) {

    return obj === obj+''

}

// 判断布尔类型

function isBoolean(obj) {

    return obj === !!obj

}
Javascript 相关文章推荐
JS 文件本身编码转换 图文教程
Oct 12 Javascript
Javascript 二维数组
Nov 26 Javascript
js取消单选按钮选中示例代码
Nov 14 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
Nov 30 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
jQuery中table数据的值拷贝和拆分
Mar 19 Javascript
vue实现商城购物车功能
Nov 27 Javascript
基于Vue实现拖拽效果
Apr 27 Javascript
js 根据对象数组中的属性进行排序实现代码
Sep 12 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 #Javascript
JavaScript函数模式详解
Nov 07 #Javascript
JavaScript代码复用模式详解
Nov 07 #Javascript
JavaScript中的style.cssText使用教程
Nov 06 #Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 #Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 #Javascript
javascript解析json实例详解
Nov 05 #Javascript
You might like
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
python删除过期log文件操作实例解析
2018/01/31 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
会计试用期自我评价
2014/09/19 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
小学教学工作总结2015
2015/05/13 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
element tree树形组件回显数据问题解决
2022/08/14 Javascript