世界上最短的数字判断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的ready方法详解
Nov 27 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
js阻止浏览器默认行为的简单实例
May 15 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
深入浅析Vue组件开发
Nov 25 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
js实现动态改变radio状态的方法
Feb 28 Javascript
在vue项目中使用md5加密的方法
Sep 14 Javascript
vue 中的动态传参和query传参操作
Nov 09 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图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Python lxml模块安装教程
2015/06/02 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
公司新员工的演讲稿注意事项
2014/01/01 职场文书
大学老师推荐信
2014/02/25 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
长江三峡导游词
2015/01/31 职场文书
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电