`
zhouyrt
  • 浏览: 1163356 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

世界上最短的数字判断代码

 
阅读更多

我们知道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
}

 

 

相关:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite

 

 

 

 

0
4
分享到:
评论

相关推荐

    世界上最短的数字判断js代码

    在文章中所讨论的最短数字判断JS代码,其实是在探讨如何用最简洁的方式编写一个能够正确判断数字类型的函数。这里总结了一些与数字判断相关的知识点: 1. typeof运算符:JavaScript中的typeof运算符可以用来判断...

    js_全世界最短的IE浏览器判断代码

    在历史上,由于Internet Explorer(IE)浏览器对JS的实现与标准不一致,开发者经常需要编写特定的代码来检测用户是否使用了IE浏览器,以便进行兼容性处理。在本文中,我们将探讨一种非常巧妙且简洁的方法,仅使用6个...

    Java里猜数字游戏代码

    在Java编程世界中,猜数字游戏是一个经典的入门项目,它能帮助初学者更好地理解控制流程、条件判断和随机数生成等基本概念。本教程将详细探讨如何使用Java编写一个简单的猜数字游戏,并涉及JSTL(JavaServer Pages ...

    判断字符编码格式代码

    根据给定文件的信息,我们可以总结出以下关于“判断字符编码格式代码”的相关知识点: ### 一、背景介绍 在计算机科学领域,字符编码是将文本转换为数字表示的方法,以便于计算机存储和处理。常见的字符编码包括...

    Python模拟掷骰子_代码判断第几天_代码判断密码强弱_代码

    在IT行业中,编程语言是构建数字世界的基石,Python作为其中的一员,因其简洁易读的语法而备受青睐。本文将深入探讨三个与Python相关的代码实践:模拟掷骰子、判断当前日期以及评估密码强度。 首先,我们来看“模拟...

    jQuery 2048数字游戏代码.zip

    《jQuery实现的2048数字游戏源代码解析》 在编程世界中,游戏开发是一项充满挑战和趣味的任务。今天我们将深入探讨一个基于jQuery实现的2048数字游戏源代码,这是一款深受程序员和游戏爱好者喜爱的轻量级游戏。通过...

    猜数字 简单的c++代码

    在编程世界中,猜数字游戏是一种经典的练习项目,它可以帮助初学者更好地理解基本的控制流程、条件判断和循环结构。这个“猜数字 简单的C++代码”就是一个很好的实例,适合C++初学者用来学习和实践。下面我们将详细...

    用Java实现猜数字游戏的代码

    接着,我们使用`Scanner`类来获取用户的输入,进行循环判断直到用户猜中目标数字。根据用户输入与目标数字的比较,程序会给出相应的提示,如“太小了”或“太大了”。 这个游戏简单易懂,适合初学者练习Java的基本...

    C 语言猜数字 源代码

    本主题围绕的是一个基于C语言的猜数字游戏的源代码,这是一个经典的学习项目,旨在帮助初学者理解控制流程、条件语句、循环以及随机数生成等基本概念。 猜数字游戏的基本流程是这样的:计算机随机生成一个特定范围...

    Android 判断是否是是全汉字、全字母、全数字、数字和字母等(代码)

    实际上,第一个zsStringInputOnlyIsNumber方法应该是用来判断数字的,第二个才是用来判断字母或数字组合的。 开发者在实现类似功能时,应确保方法名称与功能相匹配,并且在实际部署前彻底测试代码以避免重复或者...

    java 判断汉字 汉字的判断

    假设我们需要处理用户输入,当检测到输入包含汉字时执行特定的操作,例如提示用户输入英文或数字: ```java public static void main(String[] args) { String input = "你好,世界!"; if (containsChinese(input...

    数字游戏模拟程序源代码

    在IT领域,编程是实现各种应用的核心,而...通过分析和理解这个项目的源代码,开发者不仅可以巩固编程技能,还能学习到如何将现实世界的规则转化为计算机可理解的逻辑,这对于提高编程思维和解决问题的能力非常有帮助。

    c++程序好玩的源代码

    在C++编程的世界里,源代码是程序员的艺术品,它们以逻辑和算法编织出美妙的数字世界。"c++程序好玩的源代码"这个主题,旨在为初学者提供一些有趣且富有启发性的代码示例,让学习过程不再枯燥,充满乐趣。 首先,...

    少儿编程 scratch 021课源代码-机器人猜数字游戏

    资深编程老师 少儿编程案例100源代码带您轻松学习少儿编程初识编程 美国MIT开发的适合全世界小朋友一起学习的图形化编程软件,简单明了,清晰易懂,兴趣为主,寓教于乐。第二十一节课《机器人猜数字游戏》。实现的...

    基于小波变换的数字水印嵌入与提取_matlab代码

    本文将深入探讨这一主题,并结合MATLAB代码,详细解析基于小波变换的数字水印嵌入与提取方法。 一、小波变换基础 小波变换是一种多分辨率分析方法,能够同时获取信号的时间和频率信息。与傅立叶变换相比,小波变换...

    java 判断中英文

    这种方法的优点是代码简洁,但可能在性能上不如直接遍历字符。 总的来说,Java中判断字符串中是否包含中英文字符可以通过多种方式实现,关键在于理解字符编码和字符串处理的基本原理。根据实际场景选择合适的方法,...

    模拟数字发光管,点阵输出数字

    在这个特定的竞赛样题中,我们看到的重点是使用C++语言在控制台上实现点阵数字的输出,这涉及到字符显示、循环控制、数组管理和条件判断等多个编程基础概念。 首先,我们要理解数字发光管的工作原理。在现实世界中...

    算法练习-猜数字-少儿编程scratch项目源代码文件案例素材.zip

    《少儿编程Scratch项目:猜数字游戏源代码解析》 在儿童编程教育中, Scratch 是一个非常受欢迎的编程工具,它以图形化编程的方式,帮助孩子们轻松入门编程世界。本项目名为“猜数字”,是一个典型的算法练习案例,...

    C#版"猜数字"小游戏

    在编程世界中,开发一款简单的猜数字游戏是学习新语言或技术的常见练习。本项目是一个基于C#语言的猜数字小游戏,它采用了一种高效的算法——“二分法”,使得游戏过程更加智能化,能够在最短的时间内得出正确答案。...

Global site tag (gtag.js) - Google Analytics