和赋能开发者的服务。本文介绍ES6(ECMAScript6)中全新的数字方法。本文将向您介绍添加到Number数据类型的新方法和常量。当然,这里使用的方法并不是全新的,但它们已经可以直接移入和/或(例如isNaN())。我们将通过一些示例进行练习。Number.isInteger()我要介绍的第一个方法是Number.isInteger()。它是JavaScript的新手,您之前可能已经定义并使用过该方法。它确定传递给函数的值是否为整数。如果函数值为true,则返回该方法,false则跳出。这个方法的实现非常简单,是原生的JavaScript语法。覆盖此函数的方法之一是:Number.isInteger=Number.isInteger||函数(数字){returntypeofnumber==='number'&&number%1===0;};只是为了好玩,我用完全不同的方法重写了这个函数:Number.isInteger=Number.isInteger||函数(数字){returntypeofnumber==='number'&&Math.floor(number)===number;};while以上两种方法都可以判断传入的参数是否为整数,但是不符合ECMAScript6规范。所以,如果你想严格按照ES6规范重写,请从以下语法入手:Number.isInteger(number)参数number表示要测试的值。使用此方法的示例如下所示://prints'true'console.log(Number.isInteger(19));//打印'false'console.log(Number.isInteger(3.5));//打印'false'console.log(Number.isInteger([1,2,3]));Node.js和除InternetExplorer之外的所有现代浏览器都支持此方法。如果您需要支持旧版浏览器,可以使用polyfill,例如MozillaDeveloperNetwork上可用于Firefox的polyfill。请看下面的代码:地板(nVal)===nVal;};}Number.isNaN()如果您以前编写过JavaScript代码,您将会熟悉此方法。JavaScript有一个名为isNaN()的方法,由window对象公开。该方法用于判断测试值是否等于NaN,返回true,否则返回false。但是直接调用window.isNaN()有问题。当测试值被强制转换为数字时,该方法将返回一个真值。为了让您对问题有一个具体的了解,以下所有语句都会返回:true//prints'true'console.log(window.isNaN(0/0));//打印'true'console.log(window.isNaN('test'));//打印'true'console.log(window.isNaN(undefined));//打印'true'console.log(window.isNaN({prop:'value'}));您可能想要的是一种仅在传递的值为NaN时才返回true的方法。这就是ECMAScript6引入Number.isNaN()的原因。其语法如下:Number.isNaN(value)其中value是您要测试的值。此方法的一些示例用法如下://prints'true'console.log(Number.isNaN(0/0));//打印'true'console.log(Number.isNaN(NaN));//打印'false'console.log(Number.isNaN(undefined));//打印'false'console.log(Number.isNaN({prop:'value'}));如您所见,测试相同的值我们得到了不同的结果。Node和除InternetExplorer之外的所有现代浏览器都支持此方法。如果你想支持其他浏览器,这个方法的一个非常简单的polyfill如下:Number.isNaN=Number.isNaN||函数(值){返回值!==值;};NaN是JavaScript值中唯一的非自我,这意味着它是唯一不等于自身的值。Number.isFinite()这个方法和上一个方法的背景是一样的。在JavaScript中,有这样一个方法window.isFinite(),用来检测传入的值是否为有限数。不幸的是,它还会返回被强制转换为数字的真值,示例如下所示://prints'true'console.log(window.isFinite(10));//打印'true'console.log(window.isFinite(Number.MAX_VALUE));//打印'true'console.log(window.isFinite(null));//打印'true'console.log(window.isFinite([]));出于这个原因,在ECMAScript6中有一个名为isFinite()的方法。它的语法如下:Number.isFinite(value)value是你要测试的值。如果您测试前面代码段中的相同值,您会看到结果不同://prints'true'console.log(Number.isFinite(10));//打印'true'console.log(Number.isFinite(Number.MAX_VALUE));//打印'false'console.log(Number.isFinite(null));//打印'false'console.log(Number.isFinite([]));Node和所有现代浏览器都支持这种方法,除了InternetExplorer。您可以在MDN的方法页面上找到它的polyfill。Number.isSafeInteger()Number.isSafeInteger()是ES6的新增功能。它测试传递的值是否是安全整数,在这种情况下它返回true。安全整数定义为满足以下两个条件的整数:该数字可以精确表示为IEEE-754double。数字的IEEE-754表示不能是将任何其他整数四舍五入以适合IEEE-754表示的结果。根据此定义,安全整数是从-(2的53-1次方)到2的53-1次方(含)的所有整数。Number.isSafeInteger(value)value就是你要测试的值。此方法的一些示例用法如下://prints'true'console.log(Number.isSafeInteger(5));//打印'false'console.log(Number.isSafeInteger('19'));//打印'false'console.log(Number.isSafeInteger(Math.pow(2,53)));//打印'true'console.log(Number.isSafeInteger(Math.pow(2,53)-1));Number.isSafeInteger()在除InternetExplorer之外的所有现代浏览器中都受支持。此方法的polyfill由PaulMiller从es6-shim中提取,例如:Number.isSafeInteger=Number.isSafeInteger||函数(值){returnNumber.isInteger(value)&&Math.abs(value)<=Number.MAX_SAFE_INTEGER;};请注意,此polyfill依赖于前面讨论的Number.isInteger()方法,因此您需要对后者进行polyfill才能使用此方法。ECMAScript6还引入了两个相关的常量值:Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER。前者表示JavaScript中最大的安全整数,即2的53-1次方,后者表示最小的安全整数,即-(2的53-1次方)。Number.parseInt()和Number.parseFloat()Number.parseInt()和Number.parseFloat()方法属于同一节,因为与本文提到的其他类似方法不同,它们在之前的版本中已经存在ECMA脚本。因此,您可以像现在一样使用它们,并获得相同的结果。语法如下://Number.parseInt的签名Number.parseInt(string,radix)//Number.parseFloat的签名Number.parseFloat(string)其中string表示要解析的值,radix为基数要用于转换的字符串。以下片段显示了示例用法://Prints'-3'console.log(Number.parseInt('-3'));//打印'4'console.log(Number.parseInt('100',2));//打印'NaN'console.log(Number.parseInt('test'));//打印'NaN'console.log(Number.parseInt({}));//打印'42.1'console.log(Number.parseFloat('42.1')??);//打印'NaN'console.log(Number.parseFloat('test'));//打印'NaN'console.log(Number.parseFloat({}));Node和除InternetExplorer之外的所有现代浏览器都支持这些方法。如果你想使用它们,你可以像这样简单地调用它们的全局方法://PolyfillNumber.parseIntNumber.parseInt=Number.parseInt||function(){returnwindow.parseInt.apply(window,arguments);};//PolyfillNumber.parseFloatNumber.parseFloat=Number.parseFloat||函数(){返回window.parseFloat.apply(window,arguments);};用于Number数据类型的新方法和常量。值得注意的是,ES6还增加了另一个我还没有提到的常数,Number.EPSILON,它代表最大公约数。本文由葡萄城技术开发团队发布。转载请注明出处:葡萄城官网。点击这里了解更多关于全面支持Angular、React和Vue——??WijmoJS纯前端控件集。点此了解在线Excel——SpreadJS纯前端表格控件
