世界上最短的数字判断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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
js CSS操作方法集合
Oct 31 Javascript
基于JQuery的简单实现折叠菜单代码
Sep 15 Javascript
JQuery实现简单验证码提示解决方案
Dec 20 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 Javascript
javascript中通过arguments参数伪装方法重载
Oct 08 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
JavaScript小技巧整理
Dec 30 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
JS获取IMG图片高宽的简单实例
May 17 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
bootstrap 通过加减按钮实现输入框组功能
Nov 15 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php Calender(日历)代码分享
2014/01/03 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
JavaScript入门学习书籍推荐
2008/06/12 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
js调用css属性写法
2013/09/21 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python实现随机选择元素功能
2017/09/14 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
基于python中theano库的线性回归
2018/08/31 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
暑期社会实践方案
2014/02/05 职场文书
公证委托书模板
2014/04/03 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python