首页 > web前端 > js教程 > 为ecmascript做准备6:新数字方法

为ecmascript做准备6:新数字方法

Joseph Gordon-Levitt
发布: 2025-02-15 09:03:12
原创
487 人浏览过

为ecmascript做准备6:新数字方法

本文涵盖了ES6中的新的和改进的数字方法(ecmascript 6)。

>这是有关ES6的新功能的系列的一部分,在其中我们还讨论了可用于字符串和数组数据类型的新方法,但也讨论了新类型的数据类型,例如MAP和FEAMMAP。

>我将向您介绍添加到数字数据类型中的新方法和常数。正如我们将看到的那样,其中一些数字方法并不是什么新鲜事物,但是它们已得到改进和/或在正确的对象下移动(例如,isnan())。与往常一样,我们还将通过一些示例将新知识付诸实践。因此,事不宜迟,让我们开始。

>

钥匙要点

ES6

介绍了几种新数字方法,包括number.isinteger(),number.isnan(),number.Siffinite(),number.issafeInteger(),number.parseint()和number.parsefloat()。 >
    number.isinteger()检查传递的值是否为整数,number.isnan()测试是否值等于nan,而number.Siffinite()测试是否传递的值是有限的数字。
  • number.issafeinteger()测试是否传递的值是一个安全整数,定义为一个可以完全表示为IEEE-754双重精度编号的整数。
  • number.parseint()和number.parsefloat()并不是新事物,但它们已在数字对象下移动,以实现全球模块化。他们分析字符串参数并分别返回整数和浮点数。
  • ES6还引入了两个相关的常数值:number.max_safe_integer和number.min_safe_integer,代表JavaScript中的最大和最小安全整数。 number.isinteger()
  • 我要涵盖的第一个方法是number.isinteger()。这是JavaScript的新补充,这是您过去自己定义和使用的东西。它确定传递给函数的值是否为整数。如果传递值是整数,则此方法将返回true,否则为false。这种方法的实现非常容易,但是本地进行本地化仍然很好。重新创建此功能的可能解决方案之一是:
只是为了好玩,我试图重新创建此功能,最后采用了另一种方法:>

这两个功能都很好且有用,但它们不尊重Ecmascript 6的规格。因此,如果您想对此方法进行多填充,则需要一些更复杂的东西,正如我们很快会看到的那样。目前,让我们从发现number.isinteger()的语法开始:>

数字参数代表您要测试的值。
<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && number % 1 === 0;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
登录后复制

使用此方法使用的一些示例如下:

<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && Math.floor(number) === number;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
>以下代码的实时演示如下所示,也可以在JSBIN上找到。

>除了Internet Explorer,该方法在节点和所有现代浏览器中都支持该方法。如果您需要支持较旧的浏览器,则可以使用一个多填充,例如方法页面上的Mozilla开发人员网络上可用的浏览器。为了方便起见,下面还复制了这一点:

<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && number % 1 === 0;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
登录后复制
> number.isnan()

>过去您编写了任何JavaScript代码,此方法对您来说不应该是新的。一段时间以来,JavaScript有了一种称为isnan()的方法,它通过窗口对象暴露。此方法测试值是否等于NAN,在这种情况下,它返回true或其他错误。 window.isnan()的问题是,它存在一个问题,因为它也返回true,因为

>转换为数字的值将为nan。为了让您对此问题有具体的想法,以下所有陈述返回true:> 您可能需要的是一种仅在传递NAN值时返回true的方法。这就是为什么eCmascript 6引入了number.isnan()方法的原因。它的语法几乎是您所期望的:

<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && Math.floor(number) === number;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制

>在这里,值是您要测试的值。该方法的一些示例用途如下:

>
<span>Number.isInteger(number)
</span>
登录后复制
登录后复制
如您所见,测试相同的值我们获得不同的结果。

>以下片段的实时演示如下所示,也可以在JSBIN上找到。

除了Internet Explorer,该方法在节点和所有现代浏览器中都支持该方法。如果您想支持其他浏览器,那么此方法的非常简单的多填充如下:
<span>// prints 'true'
</span><span>console.log(Number.isInteger(19));
</span>
<span>// prints 'false'
</span><span>console.log(Number.isInteger(3.5));
</span>
<span>// prints 'false'
</span><span>console.log(Number.isInteger([1, 2, 3]));
</span>
登录后复制
>

这项工作的原因是因为NAN是JavaScript中唯一的非反射值,这意味着它是唯一不等于自身的值。

>

number.Isfinite()

此方法与上一个方法共享相同的故事。在JavaScript中,有一种称为window.isfinite()的方法,该方法测试是否传递的值是有限的数字。不幸的是,对于
<span>if (!Number.isInteger) {
</span>  <span>Number.isInteger = function isInteger (nVal) {
</span>    <span>return typeof nVal === 'number' &&
</span>      <span>isFinite(nVal) &&
</span>      nVal <span>> -9007199254740992 &&
</span>      nVal <span>< 9007199254740992 &&
</span>      <span>Math.floor(nVal) === nVal;
</span>  <span>};
</span><span>}
</span>
登录后复制
>转换为一个数字的值,它也将返回true。此问题的示例如下:

出于这个原因,在ecmascript 6中,有一种属于数字的方法称为isfinite()。它的语法如下:

>在这里,值是您要测试的值。如果您从上一个片段中测试相同的值,则可以看到结果是不同的:>

<span>// prints 'true'
</span><span>console.log(window.isNaN(0/0));
</span>
<span>// prints 'true'
</span><span>console.log(window.isNaN('test'));
</span>
<span>// prints 'true'
</span><span>console.log(window.isNaN(undefined));
</span>
<span>// prints 'true'
</span><span>console.log(window.isNaN({prop: 'value'}));
</span>
登录后复制
>以下片段的实时演示如下所示,也可以在JSBIN上找到。

除了Internet Explorer,该方法在节点和所有现代浏览器中都支持该方法。您可以在MDN的方法页面上找到一个多填充。

>

number.issafeInteger()

number.issafeinteger()方法是ES6的全新添加。它测试传递的值是否是一个安全整数的数字,在这种情况下,它返回了TRUE。安全整数定义为满足以下两个条件的整数:>

    该数字可以完全表示为IEEE-754双精度编号
  • 该数字的IEEE-754代表不可能是将任何其他整数符合IEEE-754表示的结果。>
  • >基于此定义,安全整数是 - (2
53

- 1)包含在2 53> 53 > 1的整数中。这些价值观很重要,我们将在本节的末尾进行更多讨论。>。 该方法的语法为:

>在这里,值是您要测试的值。该方法的一些示例用途如下:

>
<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && number % 1 === 0;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
登录后复制

>该代码的实时演示如下所示,也可在JSBIN上找到。 除了Internet Explorer外,

<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && Math.floor(number) === number;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
请注意,此polyfill依赖于以前讨论过的number.isinteger()方法,因此您还需要对后者进行多填充。

> ecmascript 6还引入了两个相关的常数值:number.max_safe_integer和number.min_safe_integer。前者代表JavaScript中的最大安全整数 - 即2

53

> 1-而后者是最小安全整数,即 - (253

1)。您可能会注意到,这些是我之前引用的相同值。
<span>Number.isInteger(number)
</span>
登录后复制
登录后复制

number.parseint()和number.parsefloat()

number.parseint()和number.parsefloat()方法在同一部分中介绍,因为与本文中提到的其他类似方法不同,它们已经存在于以前的Ecmascript中旧的全球版本。因此,您可以以到目前为止所做的方式使用它们,并且可以期待相同的结果。将这些方法添加到数字的目的是全球的模块化。 为了完整,我正在报告他们的语法:> >在这里,字符串表示您要解析的值,而radix是您要使用的radix转换字符串。 以下片段显示了一些示例,用途:

>下面显示了此代码的实时演示,也可以在JSBIN上找到。

> 除了Internet Explorer,这些方法在节点和所有现代浏览器中都支持这些方法。如果您想将它们进行多填充,则可以简单地调用其相关的全局方法,如下所示:

>
<span>Number.isInteger = Number.isInteger || function (number) {
</span>  <span>return typeof number === 'number' && number % 1 === 0;
</span><span>};
</span>
登录后复制
登录后复制
登录后复制
登录后复制

>浏览器支持

>以下图形描述了浏览器对ES6中内置数字对象的扩展的支持。鼠标在盒子上查看相应浏览器版本的百分比使用。

>

我可以使用ES6数字吗? Caniuse.com主要浏览器中对ES6数字功能的支持数据。

ES6数字方法:总结

在本教程中,我们介绍了与数字数据类型一起使用的Ecmascript 6中添加的新方法和常数。值得注意的是,ES6还增加了我尚未提到的另一个常数。这是number.epsilon和

代表一个和最小的值之间的差异大于一个数字的大于一个数字。在最后一个注释中,我们已经结束了数字数据类型的旅程。

经常询问有关ES6数字方法的问题(常见问题解答)

>新的ES6数字方法是什么?它们如何工作?

ES6引入了几种新的数字方法,使与JavaScript中的数字更易于使用。其中包括number.Isfinite(),number.isinteger(),number.isnan(),number.parsefloat()和number.parseint()。这些方法中的每一个都执行特定功能。例如,number.Iffinite()检查值是否为有限数,而number.isinteger()检查值是否为整数。 number.isnan()检查值是否为nan(不是数字),number.parsefloat()和number.parseint()分别返回浮点数和整数。 epsilon方法在es6?

number.eps6中如何工作。ES6中的epsilon是一个新常数,代表两个代表数字之间的最小间隔。在比较浮点数的平等时,这特别有用。由于计算机中浮点数表示的方式,即使它们看起来也不完全相同。 number.epsilon可用于检查两个数字之间的差异是否小于最小的间隔,表明它们实际上相等。 ES6中的number.issafeinteger()方法用于确定值是否是安全整数。安全整数是一个可以完全表示为IEEE -754双精度编号的数字,这意味着它在 - (2^53 - 1)和2^53 - 1。确保在JavaScript中可以准确表示一个数字,这在某些数学操作中可能很重要。

> number.parseint()方法与global parseint()函数有何不同?数字对象的一部分。这意味着您可以将其称为数字对象上的方法,而不是作为独立函数。功能是相同的 - 它将字符串转换为指定的radix或base。 number.max_safe_integer和number.min_safe_integer常数ES6中代表JavaScript中的最大和最小安全整数值。安全整数是可以完全表示为IEEE-754双精度编号的整数。当您需要检查一个数字是否在安全整数范围内时,这些常数很有用,这在某些数学操作中可能很重要。

>

>我如何在es6?

中使用number.Isfinite()方法是使用es6中的number.isfinite()方法来确定值是否为有限数字。这与全局isfinite()函数不同,该函数将其参数转换为数字,然后在测试它之前。 number.Iffinite()不执行此转换,因此仅在参数为有限数字时返回true,而如果参数是不能转换为数字的值。 eS6?

中的number.parsefloat()方法在es6中的number.parsefloat()方法在es6中的number.parsefloat()方法基本上与global parsefloat()函数相同,但它是数字对象的一部分。这意味着您可以将其称为数字对象上的方法,而不是作为独立函数。功能是相同的 - 它解析了一个字符串参数并返回浮点数。

如何在es6?

中使用number.isinteger()方法number.isinteger() ES6中的方法用于确定值是否是整数。如果该值是一个不是无穷大的,而不是NAN的数字,则此方法将返回true,并且可以在没有分数组件的情况下表示。当您需要检查一个数字是否是整数时,这很有用,这在某些数学操作中可能很重要。

>

>新的ES6编号方法的实际应用是什么?

>新的ES6数字方法提供了更健壮,更精确的方法来使用JavaScript中的数字。它们可用于检查一个数字是有限的,整数,NAN还是安全的整数,并将字符串分解为数字。这些方法在需要精确控制数字的数学操作,数据验证以及其他任何地方都可能特别有用。

以上是为ecmascript做准备6:新数字方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板