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 相关文章推荐
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
javascript数组去重方法汇总
Apr 23 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
使用zrender.js绘制体温单效果
Oct 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
使用URL传输SESSION信息
2015/07/14 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
asm.js使用示例代码
2013/11/28 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
python的socket编程入门
2018/01/29 Python
详解python的ORM中Pony用法
2018/02/09 Python
python实现简易学生信息管理系统
2020/04/05 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
python中常见错误及解决方法
2020/06/21 Python
python爬取招聘要求等信息实例
2020/11/20 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
水果超市创业计划书
2014/01/27 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
质量承诺书格式
2014/05/20 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
出纳工作检讨书
2014/10/18 职场文书
仙境之桥观后感
2015/06/16 职场文书
go xorm框架的使用
2021/05/22 Golang
Python实现天气查询软件
2021/06/07 Python
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis