世界上最短的数字判断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 相关文章推荐
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
Javascript玩转继承(二)
May 08 Javascript
javascript 实现map集合
Apr 03 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
微信小程序中post方法与get方法的封装
Sep 26 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 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中英混合字符串截取函数代码
2011/07/17 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
简单的js计算器实现
2016/10/26 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
详解Python中的多线程编程
2015/04/09 Python
python数据结构之图的实现方法
2015/07/08 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
python-numpy-指数分布实例详解
2019/12/07 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
年终总结会议主持词
2014/03/17 职场文书
求职信内容怎么写
2014/05/26 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2014年学生会工作总结
2014/11/07 职场文书
初二学生评语大全
2014/12/26 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android
Redis基本数据类型List常用操作命令
2022/06/01 Redis