이 기사는 ES6의 새로운 디지털 방법에 대한 요약을 제공합니다(반드시 읽어야 함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
이 글에서는 ES6(ECMAScript 6)의 새로운 수치 메서드를 소개합니다.
이 글에서는 Number
데이터 유형을 추가하는 새로운 방법과 상수를 소개합니다. 물론 여기에 사용된 메서드는 완전히 새로운 것은 아니지만 이미 and/or 내에서 직접 이동할 수 있습니다(예: 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 구문입니다. 이 함수를 다시 작성하는 한 가지 방법은 다음과 같습니다.
// 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)
// 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; };
true
// Signature of Number.parseInt Number.parseInt(string, radix) // Signature of Number.parseFloat Number.parseFloat(string)
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({}));
// 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); };
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); };
相关推荐:
위 내용은 ES6의 새로운 수치 방법 요약(필독)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!