世界上最短的数字判断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 相关文章推荐
JavaScript 大数据相加的问题
Aug 03 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
Aug 17 Javascript
js 文本滚动效果的实例代码
Aug 17 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
JS批量替换内容中关键词为超链接
Feb 20 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 Javascript
简单了解Javscript中兄弟ifream的方法调用
Jun 17 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
JavaScript Date对象功能与用法学习记录
Apr 28 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采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
面试常见的js算法题
2017/03/23 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python写一个md5解密器示例
2018/02/23 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年保管员工作总结
2015/04/30 职场文书
golang定时器
2022/04/14 Golang