在前端开发的过程中,我们经常需要处理数字数据。ES6中引入了一些新的语法、方法和数据类型来扩展JavaScript的数字处理能力。ES12进一步增强了这些功能并引入了一些新的特性。在本文中,我们将学习ES12中的数字扩展功能,包括BigInt、新的数字处理方法和新的语法。
BigInt
在JavaScript中,数字最大值受到安全整数(Number.MIN_SAFE_INTEGER和Number.MAX_SAFE_INTEGER)的限制。超过这个范围的数字会有精度问题。BigInt是ES12中引入的新的数据类型,可以表示任意精度的整数。大整数的表示方法是在数字后面加上n,如下所示:
const bigIntNumber = 1234567890123456789012345678901234567890n;
需要注意的是,BigInt不能和普通的Number类型进行运算,必须要通过BigInt提供的方法来进行操作。例如,我们可以使用BigInt的加法和乘法方法:
-- -------------------- ---- ------- ----- ------------ - ------------------------------------------ ----- ------------- - ------------------------------------------ ------------------------ - --------------- -- ---------- ------ --- ------ --- ----- ------ --- -------- ----------- ------------------------ - ----------------------- -- ------------------------------------------ ------------------------ - --------------- -- ---------- ------ --- ------ --- ----- ------ --- -------- ----------- ------------------------ - ----------------------- -- ------------------------------------------------------------------------------
数字处理方法
在ES6中,引入了一些新的方法,以方便处理数字类型的数据。ES12在此基础上进一步增强了数字处理能力。本节将介绍ES12中新的数字处理方法。
Math.clamp()
该方法接受三个参数:一个需要夹在中间的数x,一个上限数最小值min,一个下限数最大值max。返回一个在min和max之间的数,如果x小于min,返回min;如果x大于max,返回max;否则返回x。
console.log(Math.clamp(5, 4, 6)); // 5 console.log(Math.clamp(2, 4, 6)); // 4 console.log(Math.clamp(8, 4, 6)); // 6
Math.scale()
该方法接受四个参数:一个需要映射的数x,一个下限数x1,一个上限数x2,一个需要映射到的范围y。返回一个在y范围内的数。
console.log(Math.scale(50, 0, 100, 0, 1)); // 0.5
Math.degrees()和Math.radians()
这两个方法可以将弧度和角度之间进行转换。
console.log(Math.radians(90)); // 1.5707963267948966 console.log(Math.degrees(1.5707963267948966)); // 90
数字处理语法
ES6中引入了二进制、八进制和十六进制数字表示法,ES12又进一步扩展了数字处理语法。
数字分隔符
ES12中允许我们在数字的中间使用下划线_,以便于阅读。下划线不能在数字开头或结尾,也不能连续出现。
const number = 123_456_789; console.log(number); // 123456789
数字转字符串选择器
在模板字符串里可以使用{Number.prototype.toLocaleString()
}表达式来将数字进行格式化。
const number = 123456.789; console.log(`Formatted number: ${number.toLocaleString('de-DE')}`); // "Formatted number: 123.456,789"
结论
ES12为JavaScript带来了新的数字处理能力。BigInt可以扩展数字范围,clamp()方法可以方便地夹住数字,scale()方法可以方便地进行范围映射,degrees()和radians()方法可以方便地进行角度和弧度的转换。数字分隔符可以方便地阅读长数字,数字转字符串选择器可以方便地格式化数字。这些新功能可以使得前端开发更加方便、快捷、高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676f5f72e9a7045d0d72429e