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 相关文章推荐
基于jQuery的Spin Button自定义文本框数值自增或自减
Jul 17 Javascript
javascript中substr,substring,slice.splice的区别说明
Nov 25 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
JavaScript电子时钟倒计时第二款
Jan 10 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
详解JSON Web Token 入门教程
Jul 30 Javascript
Vue-Router的使用方法
Sep 05 Javascript
了解JavaScript表单操作和表单域
May 27 Javascript
原生JS实现微信通讯录
Jun 18 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获取随机数组列表的方法
2014/11/13 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python使用心得之获得github代码库列表
2014/06/25 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python先序遍历二叉树问题
2017/11/10 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Python实现EM算法实例代码
2020/10/04 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
大学生求职计划书
2014/04/30 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
golang操作rocketmq的示例代码
2022/04/06 Golang
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers