ホームページ > 記事 > ウェブフロントエンド > ES6 の新しい数値手法の概要 (必読)
この記事は、ES6 の新しいデジタル手法の概要を示しています (必読)。必要な方は参考にしていただければ幸いです。
この記事では、ES6 (ECMAScript 6) の新しい数値メソッドを紹介します。
この記事では、Number
データ型を追加する新しいメソッドと定数を紹介します。もちろん、ここで使用されているメソッドは完全に新しいわけではありませんが、すでに および/または (isNaN() など) 内で直接移動できます。いくつかの例を使ってこれを実践していきます。 Number
数据类型的新方法和常量。当然,这里采用的方法并不完全是全新的,但它们已经可以在 and/or 直接移动(例如isNaN())。我们会通过一些例子进行实践。
我要介绍的第一种方法是Number.isInteger()
。它是JavaScript的新增功能,您之前可能已经定义和使用过这个方法。它确定传递给函数的值是否为整数。如果函数值是true,则返回此方法,false则跳出。这种方法的实现非常简单,并且是原生JavaScript语法。重写此功能的方法之一是:
Number.isInteger = Number.isInteger || function (number) { return typeof number === 'number' && number % 1 === 0; };
仅仅为了好玩,我重新改写了这个功能,采用了完全不同的方法:
Number.isInteger = Number.isInteger || function (number) { return typeof number === 'number' && Math.floor(number) === number; };
虽然以上两个方法均能判断传参是否为整数,但它们不符合ECMAScript 6规范。所以,如果你想要严格按照ES6的规范改写,就请从以下语法开始:
Number.isInteger(number)
该参数number表示要测试的值。
使用此方法的示例如下所示:
// prints 'true' console.log(Number.isInteger(19)); // prints 'false' console.log(Number.isInteger(3.5)); // prints 'false' console.log(Number.isInteger([1, 2, 3]));
Node.js和所有现代浏览器都支持该方法,Internet Explorer除外。如果您需要支持旧版浏览器,则可以使用polyfill,例如火狐浏览器Mozilla Developer Network上提供的polyfill 。请看下面的代码:
if (!Number.isInteger) { Number.isInteger = function isInteger (nVal) { return typeof nVal === 'number' && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal; }; }
如果您以前编写过JavaScript代码,则此方法对您来说并不陌生。JavaScript有一个叫做isNaN()的方法通过window对象公开。此方法用以判断测试值是否等于NaN,是返回true,否则返回false。不过直接调用window.isNaN()有一个问题,当测试值被强制转换为数字时,该方法会返回true值。为了让您对此问题有一个具体的了解,以下所有语句都会返回:true
// prints 'true' console.log(window.isNaN(0/0)); // prints 'true' console.log(window.isNaN('test')); // prints 'true' console.log(window.isNaN(undefined)); // prints 'true' console.log(window.isNaN({prop: 'value'}));
您可能需要的是仅在传递值为NaN时返回true的方法。这就是ECMAScript 6引入Number.isNaN()
的原因。它的语法如下:
Number.isNaN(value) 这value是您要测试的值。此方法的一些示例用法如下所示: // prints 'true' console.log(Number.isNaN(0/0)); // prints 'true' console.log(Number.isNaN(NaN)); // prints 'false' console.log(Number.isNaN(undefined)); // prints 'false' console.log(Number.isNaN({prop: 'value'}));
如您所见,测试相同的值我们获得了不同的结果。
Node和所有现代浏览器都支持该方法,Internet Explorer除外。如果您想支持其他浏览器,则此方法的一个非常简单的polyfill如下:
Number.isNaN = Number.isNaN || function (value) { return value !== value; };
NaN是JavaScript中唯一的非自身值,这意味着它是唯一不等于自身的值。
此方法与前一个方法具有相同的背景。在JavaScript中,有这么一个方法window.isFinite()
Number.isInteger()
です。これは JavaScript にとって新しいものですが、以前にこのメソッドを定義して使用したことがあるかもしれません。関数に渡された値が整数であるかどうかを判断します。関数の値が true の場合、このメソッドは戻り、false の場合、メソッドは終了します。このメソッドの実装は非常に簡単で、ネイティブ JavaScript 構文です。この関数を書き直す 1 つの方法は次のとおりです:
// prints 'true' console.log(window.isFinite(10)); // prints 'true' console.log(window.isFinite(Number.MAX_VALUE)); // prints 'true' console.log(window.isFinite(null)); // prints 'true' console.log(window.isFinite([]));趣味のために、この関数を書き直してまったく別のメソッドを使用しました:
Number.isFinite(value)上記の 2 つのメソッドは、渡されたパラメーターが整数であるかどうかを判断できますが、ECMAScript に準拠していません。 6仕様。したがって、厳密に ES6 仕様に従って書き換えたい場合は、次の構文から始めてください:
// prints 'true' console.log(Number.isFinite(10)); // prints 'true' console.log(Number.isFinite(Number.MAX_VALUE)); // prints 'false' console.log(Number.isFinite(null)); // prints 'false' console.log(Number.isFinite([]));
Number.isSafeInteger(value) 这value是您要测试的值。此方法的一些示例用法如下所示: // prints 'true' console.log(Number.isSafeInteger(5)); // prints 'false' console.log(Number.isSafeInteger('19')); // prints 'false' console.log(Number.isSafeInteger(Math.pow(2, 53))); // prints 'true' console.log(Number.isSafeInteger(Math.pow(2, 53) - 1));
Number.isSafeInteger = Number.isSafeInteger || function (value) { return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER; };Number.isNaN()
true
// Signature of Number.parseInt Number.parseInt(string, radix) // Signature of Number.parseFloat Number.parseFloat(string)を返します。 おそらく必要なのは、渡された値が NaN の場合にのみ true を返すメソッドです。これが、ECMAScript 6 で
Number.isNaN()
が導入された理由です。その構文は次のとおりです:
// Prints '-3' console.log(Number.parseInt('-3')); // Prints '4' console.log(Number.parseInt('100', 2)); // Prints 'NaN' console.log(Number.parseInt('test')); // Prints 'NaN' console.log(Number.parseInt({})); // Prints '42.1' console.log(Number.parseFloat('42.1')); // Prints 'NaN' console.log(Number.parseFloat('test')); // Prints 'NaN' console.log(Number.parseFloat({}));ご覧のとおり、同じ値をテストすると、異なる結果が得られます。 この方法は、Node と Internet Explorer を除くすべての最新のブラウザーでサポートされています。他のブラウザをサポートしたい場合、このメソッドの非常に単純なポリフィルは次のとおりです:
// Polyfill Number.parseInt Number.parseInt = Number.parseInt || function () { return window.parseInt.apply(window, arguments); }; // Polyfill Number.parseFloat Number.parseFloat = Number.parseFloat || function () { return window.parseFloat.apply(window, arguments); };NaN は JavaScript の唯一の非自己値であり、それ自体と等しくない唯一の値であることを意味します。 Number.isFinite() このメソッドの背景は前のメソッドと同じです。 JavaScript には、渡された値が有限数であるかどうかをテストするために使用されるメソッド
window.isFinite()
があります。残念ながら、次のような数値に強制された true 値も返します。 rrreee このため、ECMAScript 6 には isFinite() と呼ばれるメソッドがあります。構文は次のとおりです。 rrreeevalue はテストする値です。前のスニペットと同じ値をテストすると、結果が異なることがわかります: rrreee
このメソッドは、Node と、Internet Explorer を除くすべての最新のブラウザーでサポートされています。そのポリフィルは MDN のメソッド ページで見つけることができます。 Number.isSafeInteger() Number.isSafeInteger() は ES6 に新しく追加されたものです。渡された値が安全な整数かどうかをテストし、安全な整数の場合は true を返します。安全な整数は、次の 2 つの条件を満たす整数として定義されます: 数値は IEEE-754 double として正確に表現できます🎜🎜🎜🎜数値の IEEE-754 表現は、四捨五入された他の整数にはできませんfit IEEE-754 は結果を表します。 🎜🎜🎜🎜この定義によれば、安全な整数は🎜-(2の53乗-1)🎜から🎜2の53乗-1🎜までのすべての整数です。 🎜rrreee🎜Number.isSafeInteger() は、Internet Explorer を除くすべての最新のブラウザーでサポートされています。このメソッドのポリフィルは、Paul Miller によって es6-shim から次のように取得されました。 🎜rrreee🎜 このポリフィルは前述の Number.isInteger() メソッドに依存しているため、このメソッドを使用するには後者をポリフィルする必要があることに注意してください。 🎜🎜ECMAScript 6 では、🎜Number.MAX_SAFE_INTEGER🎜 と 🎜Number.MIN_SAFE_INTEGER🎜 という 2 つの関連する定数値も導入されています。前者は JavaScript の最大の安全な整数 (2 の 53 乗 - 1) を表し、後者は最小の安全な整数 - (2 の 53 乗 - 1) を表します。 🎜🎜Number.parseInt() メソッドと Number.parseFloat() 🎜🎜Number.parseInt() メソッドと Number.parseFloat() メソッドは両方とも同じセクションに属します。これは、この記事で説明されている他の同様のメソッドとは異なり、以前のバージョンのECMAScript。したがって、現在と同じ方法で使用でき、同じ結果が得られます。構文は次のとおりです: 🎜rrreee🎜 ここで、string は解析する値を表し、radix は変換に使用する基数文字列です。 🎜🎜次のコード スニペットは使用例を示しています: 🎜// Prints '-3' console.log(Number.parseInt('-3')); // Prints '4' console.log(Number.parseInt('100', 2)); // Prints 'NaN' console.log(Number.parseInt('test')); // Prints 'NaN' console.log(Number.parseInt({})); // Prints '42.1' console.log(Number.parseFloat('42.1')); // Prints 'NaN' console.log(Number.parseFloat('test')); // Prints 'NaN' console.log(Number.parseFloat({}));
Node和所有现代浏览器都支持这些方法,Internet Explorer除外。如果您想要使用它们,您可以简单地调用它们的全局方法,如下所示:
// Polyfill Number.parseInt Number.parseInt = Number.parseInt || function () { return window.parseInt.apply(window, arguments); }; // Polyfill Number.parseFloat Number.parseFloat = Number.parseFloat || function () { return window.parseFloat.apply(window, arguments); };
相关推荐:
以上がES6 の新しい数値手法の概要 (必読)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。