世界上最短的数字判断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 相关文章推荐
js 覆盖和重载 函数
Sep 25 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
Aug 18 Javascript
iview同时验证多个表单问题总结
Sep 29 Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 Javascript
JavaScript控制台的更多功能
Apr 28 Javascript
JavaScript文档对象模型DOM
Nov 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处理json时中文问题的解决方法
2011/04/12 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
React组件生命周期详解
2017/07/03 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
高三毕业寄语
2014/04/10 职场文书
团拜会策划方案
2014/06/07 职场文书
销售顾问工作计划书
2014/08/15 职场文书
2014年招生工作总结
2014/11/26 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
详解MySQL的内连接和外连接
2023/05/08 MySQL