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 分页控件实现代码
Nov 30 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
JavaScript 基础篇(一)
Mar 30 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 Javascript
js onload处理html页面加载之后的事件
Oct 30 Javascript
js调试系列 初识控制台
Jun 18 Javascript
Jquery实现鼠标移动放大图片功能实例
Mar 25 Javascript
javascript制作的简单注册模块表单验证
Apr 13 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
javascript实现Emrips反质数枚举的示例代码
Dec 06 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 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中的数组操作函数整理
2008/08/18 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
Python实现全角半角字符互转的方法
2016/11/28 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
用python做游戏的细节详解
2019/06/25 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Python json读写方式和字典相互转化
2020/04/18 Python
新锐科技Java程序员面试题
2016/07/25 面试题
个人简历自我评价
2014/02/02 职场文书
企业军训感言
2014/02/08 职场文书
《社戏》教学反思
2014/04/15 职场文书
大雁塔导游词
2015/02/04 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
教你如何用cmd快速登录服务器
2022/06/10 Servers