世界上最短的数字判断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 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
在Vue-cli里应用Vuex的state和mutations方法
Sep 16 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
js实现拖动缓动效果
Jan 13 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
PHP实现计算器小功能
2020/08/28 PHP
js字符编码函数区别分析
2008/06/05 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python中树与树的表示知识点总结
2019/09/14 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
外企财务年会演讲稿
2014/01/03 职场文书
美术毕业生求职信
2014/02/25 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
公司周年庆活动方案
2014/08/25 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书