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 相关文章推荐
javascript中的对象和数组的应用技巧
Jan 07 Javascript
点击进行复制的JS代码实例
Aug 23 Javascript
使用JS读秒使用示例
Sep 21 Javascript
js从Cookies里面取值的简单实现
Jun 30 Javascript
javascript实现youku的视频代码自适应宽度
May 25 Javascript
浅谈JavaScript 的执行顺序
Aug 07 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
vue微信分享插件使用方法详解
Feb 18 Javascript
vue实现页面切换滑动效果
Jun 29 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中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
php中错误处理操作实例分析
2019/08/23 PHP
jquery操作select option 的代码小结
2011/06/21 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python Requests安装与简单运用
2016/04/07 Python
python实现决策树分类
2018/08/30 Python
python3实现表白神器
2019/04/09 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
django的ORM操作 增加和查询
2019/07/26 Python
python集合常见运算案例解析
2019/10/17 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
汽车工程专业应届生求职信
2013/10/19 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
2016年寒假见闻
2015/10/10 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android