世界上最短的数字判断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 图片截取工具jquery.imagecropper.js
Apr 09 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
初识angular框架后的所思所想
Feb 19 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
jQuery实现简单飞机大战
Jul 05 jQuery
jQuery 动态粒子效果示例代码
Jul 07 jQuery
JS指定音频audio在某个时间点进行播放
Nov 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
PHP原理之异常机制深入分析
2010/08/08 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php防止sql注入的方法详解
2017/02/20 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
php跨域调用json的例子
2013/11/13 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
python自定义函数def的应用详解
2020/06/03 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
学习十八大报告感言
2014/02/28 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
董事长岗位职责
2015/02/13 职场文书
三八妇女节主持词
2015/07/04 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
浅谈Redis的事件驱动模型
2022/05/30 Redis