世界上最短的数字判断js代码


Posted in Javascript onSeptember 09, 2019

我们知道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
}

总结

以上所述是小编给大家介绍的世界上最短的数字判断js代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
详解JS函数重载
Dec 04 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
Bootstrap简单表单显示学习笔记
Nov 15 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
Aug 23 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
详解javascript void(0)
Jul 13 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 #Javascript
javascript删除数组元素的七个方法示例
Sep 09 #Javascript
微信小程序 select 下拉框组件功能
Sep 09 #Javascript
移动端手指操控左右滑动的菜单
Sep 08 #Javascript
swiper Scrollbar滚动条组件详解
Sep 08 #Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 #Javascript
swiper4实现移动端导航切换
Oct 16 #Javascript
You might like
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
PHP中捕获超时事件的方法实例
2015/02/12 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python for循环及基础用法详解
2019/11/08 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
医学院四年学习生活的自我评价
2013/11/06 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
宣传委员竞选稿
2015/11/19 职场文书
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技