乐趣区

关于javascript:检查-JavaScript-变量是否为数字的几种方式

作者:Marcus Sanatan

翻译:疯狂的技术宅

原文:https://stackabuse.com/javasc…

未经容许严禁转载

介绍

JavaScript 是一种动静类型的语言,这意味着解释器是在运行时确定变量类型的。这容许咱们能够用同一变量中存储不同类型的数据。然而如果没有文档和放弃一致性,在应用代码时,咱们很有可能并不知道变量到底是哪种类型。

当咱们打算对数字进行操作时,如果对字符串或数组进行操作会带来奇怪的后果。在本文中,咱们将钻研能够帮咱们确定所用的变量是否为数字的各种函数。

字符串模式的数字例如 "100" 不应该被解决,同时在 JavaScript 中 NaNInfinity-Infinity 之类的非凡值也都是数字,不过咱们将疏忽这些值。

依据这些要求,最好应用 Number 对象内置 isFinite() 函数。然而有时候咱们也会应用其余函数,例如 Number.isNaN()typeof() 等。

首先创立一些测试变量:

let intVar = 2;
let floatVar = 10.5;
let stringVar = '4';
let nanVar = NaN;
let infinityVar = Infinity;
let nullVar = null;
let undefinedVar = undefined;

应用 Number.isFinite() 函数

Number.isFinite() 用来函数查看变量是否为数字,但也用来查看其是否为某些非凡值。它在遇到 NaN, Infinity 或者 -Infinity 时会返回 false

接下来在下面定义的变量上进行测试:

> Number.isFinite(intVar);
true
> Number.isFinite(floatVar);
true
> Number.isFinite(stringVar);
false
> Number.isFinite(nanVar);
false
> Number.isFinite(infinityVar);
false
> Number.isFinite(nullVar);
false
> Number.isFinite(undefined);
false

后果令人满意。非凡的数字值以及所有非数字类型的变量都将会被疏忽。如果想要查看某个变量是否为数字,Number.isFinite() 函数是最好的抉择。

应用 Number.isNaN() 函数

规范的 Number 对象具备 isNaN() 办法。用来判断传入的参数值是否为 NaN。因为咱们要查看变量是否为数字,所以须要在查看中要应用非运算符 !

当初看看通过非运算符加 Number.isNaN() 函数是否只过滤数字:

> !Number.isNaN(intVar);
true
> !Number.isNaN(floatVar);
true
> !Number.isNaN(stringVar);
true # 判断谬误
> !Number.isNaN(nanVar);
false
> !Number.isNaN(infinityVar);
true # 判断谬误
> !Number.isNaN(nullVar);
true # 判断谬误
> !Number.isNaN(undefinedVar);
true # 判断谬误 

这种办法相当宽松,因为它承受的值基本不是数字。这种办法最适宜在你晓得本人的值是数字并且要查看它是否为 NaN 值的状况下,并不适宜惯例数字的。

应用 typeof() 函数

typeof() 函数是一个全局函数,它的参数能够承受变量或值,并返回其类型的字符串示意模式。JavaScript 共有 9 种类型:

  • undefined
  • boolean
  • number
  • string
  • bigint
  • symbol
  • object
  • null (typeof() 显示为对象 )
  • function (对象的一种非凡类型)

为了验证变量是否为数字,咱们只须要查看 typeof() 返回的值是否为 "number"。让咱们尝试一下测试变量:

> typeof(intVar) == 'number';
true
> typeof(floatVar) == 'number';
true
> typeof(stringVar) == 'number';
false
> typeof(nanVar) == 'number';
true # 判断谬误
> typeof(infinityVar) == 'number';
true # 判断谬误
> typeof(nullVar) == 'number';
false
> typeof(undefined) == 'number';
false

typeof() 函数比 Number.isNaN() 好得多。它能够正确的判断 nullundefined 不是数字。但如果是 NaNInfinity,它会返回 true。

只管从技术角度上来说这是正确的,但 NaNInfinity 是非凡的数字值,咱们在大多数状况下都会疏忽它们。

总结

本文钻研了如何查看 JavaScript 中的变量是否为数字。

  • 只有在咱们晓得本人的变量是一个数字,并且须要验证它是否为 NaN 时,Number.isNaN() 函数才实用。
  • 如果你的代码须要解决 NaNInfinity-Infinity 及其他数字时,则 typeof() 函数是实用的。
  • Number.isFinite() 办法可能解决非凡数字,并且最适宜咱们的要求。


本文首发微信公众号:前端先锋

欢送扫描二维码关注公众号,每天都给你推送陈腐的前端技术文章

欢送持续浏览本专栏其它高赞文章:

  • 深刻了解 Shadow DOM v1
  • 一步步教你用 WebVR 实现虚拟现实游戏
  • 13 个帮你进步开发效率的古代 CSS 框架
  • 疾速上手 BootstrapVue
  • JavaScript 引擎是如何工作的?从调用栈到 Promise 你须要晓得的所有
  • WebSocket 实战:在 Node 和 React 之间进行实时通信
  • 对于 Git 的 20 个面试题
  • 深刻解析 Node.js 的 console.log
  • Node.js 到底是什么?
  • 30 分钟用 Node.js 构建一个 API 服务器
  • Javascript 的对象拷贝
  • 程序员 30 岁前月薪达不到 30K,该何去何从
  • 14 个最好的 JavaScript 数据可视化库
  • 8 个给前端的顶级 VS Code 扩大插件
  • Node.js 多线程齐全指南
  • 把 HTML 转成 PDF 的 4 个计划及实现

  • 更多文章 …
退出移动版