世界上最短的数字判断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 相关文章推荐
js获取变量
Aug 24 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 Javascript
js实现tab切换效果
Feb 16 Javascript
js canvas实现简单的图像扩散效果
Jun 28 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
解决eclipse中没有js代码提示的问题
Oct 10 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 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
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP开发注意事项总结
2015/02/04 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python 函数基础知识汇总
2018/03/09 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python实现的简单计算器功能详解
2018/08/25 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
python如何更新包
2020/06/11 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
汽车技术服务英文求职信范文
2014/01/02 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
python高温预警数据获取实例
2022/07/23 Python