世界上最短的数字判断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 相关文章推荐
一个原生的用户等级的进度条
Jul 03 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
js 作用域和变量详解
Feb 16 Javascript
Bootstrap警告框(Alert)插件使用方法
Mar 21 Javascript
jQuery插件之validation插件
Mar 29 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
详解element-ui日期时间选择器的日期格式化问题
Apr 08 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实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP静态成员变量
2017/02/14 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python作用域用法实例详解
2016/03/15 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
大专毕业生自我评价分享
2013/11/10 职场文书
优秀广告词大全
2014/03/19 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技