>  기사  >  웹 프론트엔드  >  ES6의 새로운 수치 방법 요약(필독)

ES6의 새로운 수치 방법 요약(필독)

不言
不言원래의
2018-08-17 14:18:301842검색

이 기사는 ES6의 새로운 디지털 방법에 대한 요약을 제공합니다(반드시 읽어야 함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

이 글에서는 ES6(ECMAScript 6)의 새로운 수치 메서드를 소개합니다.

이 글에서는 Number 데이터 유형을 추가하는 새로운 방법과 상수를 소개합니다. 물론 여기에 사용된 메서드는 완전히 새로운 것은 아니지만 이미 and/or 내에서 직접 이동할 수 있습니다(예: isNaN()). 우리는 몇 가지 예를 통해 이것을 연습할 것입니다. Number数据类型的新方法和常量。当然,这里采用的方法并不完全是全新的,但它们已经可以在 and/or 直接移动(例如isNaN())。我们会通过一些例子进行实践。

Number.isInteger()

我要介绍的第一种方法是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;
      };
    }

Number.isNaN()

如果您以前编写过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中唯一的非自身值,这意味着它是唯一不等于自身的值。

Number.isFinite()

此方法与前一个方法具有相同的背景。在JavaScript中,有这么一个方法window.isFinite()

Number.isInteger()

첫 번째로 소개하고 싶은 메소드는 Number.isInteger()입니다. 이는 JavaScript의 새로운 기능이며 이전에 이 메서드를 정의하고 사용해 본 적이 있을 것입니다. 함수에 전달된 값이 정수인지 여부를 확인합니다. 함수 값이 true이면 이 메서드는 반환되고, false이면 종료됩니다. 이 메소드의 구현은 매우 간단하며 기본 JavaScript 구문입니다. 이 함수를 다시 작성하는 한 가지 방법은 다음과 같습니다.

    // 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)
위의 두 가지 방법으로 여부를 결정할 수 있습니다. 전달된 매개변수는 정수이지만 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));
  • 이 방법은 Internet Explorer를 제외한 Node.js와 모든 최신 브라우저에서 지원됩니다. 이전 브라우저를 지원해야 하는 경우 Firefox용 Mozilla 개발자 네트워크에서 제공되는 것과 같은 폴리필을 사용할 수 있습니다. 아래 코드를 살펴보세요.

        
        Number.isSafeInteger = Number.isSafeInteger || function (value) {
          return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
        };
    Number.isNaN()
  • 이전에 JavaScript 코드를 작성해 본 적이 있다면 이 방법이 낯설지 않을 것입니다. JavaScript에는 window 객체를 통해 노출되는 isNaN()이라는 메서드가 있습니다. 이 메서드는 테스트 값이 NaN과 같은지 확인하는 데 사용됩니다. true를 반환하고, 그렇지 않으면 false를 반환합니다. 다만, window.isNaN()을 직접 호출하면 테스트 값을 강제로 숫자로 변환해야 하는 경우 이 메서드는 true 값을 반환하는 문제가 있습니다. 문제에 대한 구체적인 아이디어를 제공하기 위해 다음 명령문이 모두 반환됩니다.

    true

  •     // Signature of Number.parseInt
        Number.parseInt(string, radix)
        
        // Signature of Number.parseFloat
        Number.parseFloat(string)
    당신이 원하는 것은 아마도 통과한 경우에만 true를 반환하는 것입니다. 값은 NaN 방법입니다. 이것이 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({}));
    보시다시피 동일한 값을 테스트하면 다른 결과가 나타납니다. 이 방법은 Internet Explorer를 제외한 Node 및 모든 최신 브라우저에서 지원됩니다. 다른 브라우저를 지원하려는 경우 이 방법에 대한 매우 간단한 폴리필은 다음과 같습니다.
        // 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의 유일한 non-self 값입니다. 즉, 다음과 같지 않은 유일한 값입니다. 그 자체.

    Number.isFinite()

    이 메서드는 이전 메서드와 배경이 동일합니다. JavaScript에는 전달된 값이 유한한 숫자인지 테스트하는 데 사용되는 window.isFinite() 메서드가 있습니다. 안타깝게도 숫자로 강제 변환된 실제 값도 반환합니다. 예는 다음과 같습니다.

    rrreeeECMAScript 6에는 이러한 이유로 isFinite()라는 메서드가 있습니다. 구문은 다음과 같습니다. rrreeevalue는 테스트하려는 값입니다. 이전 코드 조각에서 동일한 값을 테스트하면 결과가 다른 것을 볼 수 있습니다. rrreee

    이 방법은 Internet Explorer를 제외한 Node 및 모든 최신 브라우저에서 지원됩니다. MDN의 메소드 페이지에서 폴리필을 찾을 수 있습니다.

    Number.isSafeInteger()

    Number.isSafeInteger()는 ES6에 새로 추가된 기능입니다. 전달된 값이 안전한 정수인지 테스트하고, 이 경우 true를 반환합니다. 안전한 정수는 다음 두 가지 조건을 만족하는 정수로 정의됩니다.

    숫자는 IEEE-754 double #🎜🎜##🎜🎜으로 정확하게 표현될 수 있습니다. ## 🎜🎜##🎜🎜#숫자의 IEEE-754 표현은 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#🎜🎜#이 도입되었습니다. 전자는 JavaScript에서 가장 큰 안전한 정수(2의 53 - 1승)를 나타내고, 후자는 가장 작은 안전한 정수(2의 53 - 1승)를 나타냅니다. #🎜🎜##🎜🎜#Number.parseInt() 및 Number.parseFloat() #🎜🎜##🎜🎜#Number.parseInt() 및 Number.parseFloat() 메소드는 모두 동일한 섹션에 속합니다. 왜냐하면 여기와는 다르기 때문입니다. 이 기사에서 언급된 유사한 방법은 이전 버전의 ECMAScript에도 존재했습니다. 따라서 현재와 동일한 방식으로 사용하면 동일한 결과를 얻을 수 있습니다. 구문은 다음과 같습니다: #🎜🎜#rrreee#🎜🎜#여기서 문자열은 구문 분석할 값을 나타내고 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);
        };

    相关推荐:

    ES5与ES6数组方法总结

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

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


    위 내용은 ES6의 새로운 수치 방법 요약(필독)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.