世界上最短的数字判断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实现拆分姓名的方法(纯JS版)
May 08 Javascript
js中reverse函数的用法详解
Dec 26 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
浅析js预加载/延迟加载
Sep 25 Javascript
jQuery的deferred对象详解
Nov 12 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 Javascript
jQuery中的通配符选择器使用总结
May 30 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
Node.js 的 GC 机制详解
Jun 03 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php函数之子字符串替换 str_replace
2011/03/23 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
python3库numpy数组属性的查看方法
2018/04/17 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
制药工程专业职业生涯规划范文
2014/03/10 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
聘任书范文大全
2015/09/21 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
关于MySQL中的 like操作符详情
2021/11/17 MySQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL