世界上最短的数字判断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程序的代码风格详细介绍
Jan 03 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
Apr 08 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
封装属于自己的JS组件
Jan 27 Javascript
javascript每日必学之继承
Feb 23 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
Apr 20 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针对字符串开头和结尾的判断方法
2016/07/11 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
python实现字符串和数字拼接
2020/03/02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
C++的几个面试题附答案
2016/08/03 面试题
竞选班委演讲稿
2014/04/28 职场文书
商场周年庆活动方案
2014/08/19 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
公司经营目标责任书
2015/01/29 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS