Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der neuen numerischen Methoden in ES6 (unbedingt lesen)

Zusammenfassung der neuen numerischen Methoden in ES6 (unbedingt lesen)

不言
不言Original
2018-08-17 14:18:301842Durchsuche

Dieser Artikel bietet Ihnen eine Zusammenfassung der neuen digitalen Methoden in ES6 (ein Muss). Freunde in Not können sich darauf beziehen.

In diesem Artikel werden die neuen numerischen Methoden in ES6 (ECMAScript 6) vorgestellt.

Dieser Artikel stellt Ihnen neue Methoden und Konstanten zum Hinzufügen von Number Datentypen vor. Natürlich sind die hier verwendeten Methoden nicht ganz neu, aber sie können bereits direkt in und/oder verschoben werden (z. B. isNaN()). Wir werden dies anhand einiger Beispiele üben.

Number.isInteger()

Die erste Methode, die ich vorstellen möchte, ist Number.isInteger(). Es ist neu in JavaScript und Sie haben diese Methode möglicherweise schon einmal definiert und verwendet. Es bestimmt, ob der an die Funktion übergebene Wert eine Ganzzahl ist. Wenn der Funktionswert wahr ist, gibt diese Methode zurück, wenn sie falsch ist, wird sie beendet. Die Implementierung dieser Methode ist sehr einfach und basiert auf nativer JavaScript-Syntax. Eine Möglichkeit, diese Funktion umzuschreiben, ist:

    Number.isInteger = Number.isInteger || function (number) {
      return typeof number === 'number' && number % 1 === 0;
    };

Nur zum Spaß habe ich diese Funktion umgeschrieben und eine völlig andere Methode verwendet:

    Number.isInteger = Number.isInteger || function (number) {
      return typeof number === 'number' && Math.floor(number) === number;
    };

Obwohl beide oben genannten Methoden feststellen können, ob die Funktion bestanden wurde Parameter sind Ganzzahlen, entsprechen jedoch nicht der ECMAScript 6-Spezifikation. Wenn Sie also streng nach ES6-Spezifikationen umschreiben möchten, beginnen Sie bitte mit der folgenden Syntax:

    Number.isInteger(number)

Die Parameternummer stellt den zu testenden Wert dar.

Ein Beispiel für die Verwendung dieser Methode sieht so aus:

    // prints 'true'
    console.log(Number.isInteger(19));
    
    // prints 'false'
    console.log(Number.isInteger(3.5));
    
    // prints 'false'
    console.log(Number.isInteger([1, 2, 3]));

Diese Methode wird von Node.js und allen modernen Browsern außer Internet Explorer unterstützt. Wenn Sie ältere Browser unterstützen müssen, können Sie ein Polyfill verwenden, wie es beispielsweise im Mozilla Developer Network für Firefox verfügbar ist. Schauen Sie sich den folgenden Code an:

    if (!Number.isInteger) {
      Number.isInteger = function isInteger (nVal) {
        return typeof nVal === 'number' &&
          isFinite(nVal) &&
          nVal > -9007199254740992 &&
          nVal < 9007199254740992 &&
          Math.floor(nVal) === nVal;
      };
    }

Number.isNaN()

Wenn Sie bereits JavaScript-Code geschrieben haben, ist diese Methode für Sie nicht neu. JavaScript verfügt über eine Methode namens isNaN(), die über das Fensterobjekt verfügbar gemacht wird. Mit dieser Methode wird ermittelt, ob der Testwert gleich NaN ist. Sie gibt „true“ zurück, andernfalls gibt sie „false“ zurück. Es gibt jedoch ein Problem beim direkten Aufruf von window.isNaN(). Wenn die Konvertierung des Testwerts in eine Zahl erzwungen wird, gibt diese Methode einen wahren Wert zurück. Um Ihnen eine konkrete Vorstellung vom Problem zu geben, geben alle folgenden Anweisungen zurück: 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'}));

Was Sie wahrscheinlich wollen, ist eine Methode, die nur true zurückgibt, wenn der übergebene Wert NaN ist . Aus diesem Grund wurde mit ECMAScript 6 Number.isNaN() eingeführt. Die Syntax lautet wie folgt:

    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'}));

Wie Sie sehen, erhalten wir beim Testen derselben Werte unterschiedliche Ergebnisse.

Diese Methode wird von Node und allen modernen Browsern außer Internet Explorer unterstützt. Wenn Sie andere Browser unterstützen möchten, lautet ein sehr einfaches Polyfill für diese Methode wie folgt:

    Number.isNaN = Number.isNaN || function (value) {
      return value !== value;
    };

NaN ist der einzige Nicht-Selbstwert in JavaScript, was bedeutet, dass es der einzige Wert ist, der nicht mit sich selbst gleich ist.

Number.isFinite()

Diese Methode hat den gleichen Hintergrund wie die vorherige Methode. In JavaScript gibt es eine solche Methode window.isFinite(), mit der getestet wird, ob der übergebene Wert eine endliche Zahl ist. Leider gibt es auch einen wahren Wert zurück, der in eine Zahl umgewandelt wird. Ein Beispiel sieht so aus:

    // 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([]));

Aus diesem Grund gibt es in ECMAScript 6 eine Methode namens isFinite(). Die Syntax lautet wie folgt:

    Number.isFinite(value)

Wert ist der Wert, den Sie testen möchten. Wenn Sie denselben Wert aus dem vorherigen Snippet testen, sehen Sie, dass die Ergebnisse unterschiedlich sind:

    
    // 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([]));

Diese Methode wird von Node und allen modernen Browsern außer Internet Explorer unterstützt. Sie finden die Polyfüllung auf der Methodenseite von MDN.

Number.isSafeInteger()

Number.isSafeInteger() ist eine brandneue Ergänzung zu ES6. Es prüft, ob der übergebene Wert eine sichere Ganzzahl ist. In diesem Fall wird „true“ zurückgegeben. Eine sichere Ganzzahl ist als Ganzzahl definiert, die die folgenden zwei Bedingungen erfüllt:

  • Die Zahl kann genau als IEEE-754-Doppel dargestellt werden

  • Zahl Die IEEE-754-Darstellung kann nicht das Ergebnis der Rundung einer anderen ganzen Zahl sein, um sie an die IEEE-754-Darstellung anzupassen.

Nach dieser Definition ist eine sichere ganze Zahl von - (2 hoch 53 - 1) einschließlich 2 hoch 53 - 1 enthält alle ganzen Zahlen.

    
    
    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() wird in allen modernen Browsern außer Internet Explorer unterstützt. Die Polyfüllung für diese Methode wurde von Paul Miller aus es6-shim übernommen:

    
    Number.isSafeInteger = Number.isSafeInteger || function (value) {
      return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
    };

Bitte beachten Sie, dass diese Polyfüllung auf der zuvor besprochenen Methode Number.isInteger() basiert, sodass Sie dies für letztere tun müssen polyfill, um diese Methode zu verwenden.

ECMAScript 6 führt außerdem zwei verwandte konstante Werte ein: Number.MAX_SAFE_INTEGER und Number.MIN_SAFE_INTEGER. Ersteres stellt die größte sichere Ganzzahl in JavaScript dar, die 2 hoch 53 – 1 beträgt, während letztere die kleinste sichere Ganzzahl darstellt, die – (2 hoch 53 – 1) beträgt.

Number.parseInt() und Number.parseFloat()

Die Methoden Number.parseInt() und Number.parseFloat() gehören beide zum selben Abschnitt, da sie in diesem Artikel nicht erwähnt werden Andere ähnliche Methoden gab es bereits in früheren Versionen von ECMAScript. Daher können Sie sie auf die gleiche Weise wie bisher verwenden und die gleichen Ergebnisse erzielen. Die Syntax lautet wie folgt:

    // Signature of Number.parseInt
    Number.parseInt(string, radix)
    
    // Signature of Number.parseFloat
    Number.parseFloat(string)

wobei string den zu analysierenden Wert darstellt und radix die Basiszeichenfolge ist, die Sie für die Konvertierung verwenden möchten.

Der folgende Codeausschnitt zeigt ein Beispiel für die Verwendung:

    // 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);
    };

相关推荐:

ES5与ES6数组方法总结

关于ES6中字符串string常用的新增方法分享

ES6里关于数字新增判断详解


Das obige ist der detaillierte Inhalt vonZusammenfassung der neuen numerischen Methoden in ES6 (unbedingt lesen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn