随着 Web 技术的不断发展,前端开发也在不断变化。ECMAScript 2020(ES11)是前端开发中的新一轮技术更新。其中数字和数字符号的实现方法也有所改变。
改变:BigInt 类型
在 ES11 中,我们可以使用 BigInt
类型来表示超过 Number.MAX_SAFE_INTEGER
(2 的 53 次幂减1)的整数。BigInt
类型在数值后加 n
或者调用构造函数来创建。
const big = 1234567890123456789012345678901234567890n; console.log(big); // 1234567890123456789012345678901234567890n
新特性:更好的数学方法
ES11 还引入了新的数学方法。这些方法简化了数字和数学的操作,例如:
Math.clamp()
Math.clamp()
方法将数字约束在指定的范围中。
const num = 10; const min = 5; const max = 20; console.log(Math.clamp(num, min, max)); // 10 console.log(Math.clamp(num, 15, max)); // 15 console.log(Math.clamp(num, min, 7)); // 7
Math.scale()
Math.scale()
方法用于将一个数从一定范围尺度映射到另一个范围尺度。
console.log(Math.scale(5, 0, 10, 100, 200)); // 150
在上面的例子中,数字 5(在原始范围中)被映射到一个新范围(100 - 200)的等同位置。
Math.degrees()
和 Math.radians()
Math.degrees()
和 Math.radians()
方法可以分别将角度和弧度互相转换。
console.log(Math.degrees(Math.PI)); // 180 console.log(Math.radians(180)); // 3.141592653589793
新特性:新的数字符号
ES11 引入了新的数字符号,这些数字符号可以帮助开发人员更轻松地处理数字和货币。以下是一些常用的数字符号。
科学计数法
科学计数法允许使用 e 和 E 符号来表示数值的大小。例如:
console.log(1e6); // 1000000 console.log(1.2e-3); // 0.0012
在上述代码中,1e6 表示 1 后跟 6 个零,1.2e-3 表示 1.2 后跟 3 个零。
八进制和十六进制
ES11 引入了用于八进制和十六进制数字的新前缀。
console.log(0o123); // 83 console.log(0x1F); // 31
在这里,0o 前缀表示八进制数字,0x 前缀表示十六进制数字。
货币计数
Intl.NumberFormat
方法可以轻松格式化货币。
const currency = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }); console.log(currency.format(12345.67)); // $12,345.67 const currency2 = new Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' }); console.log(currency2.format(12345.67)); // ¥12,345.67
在上述代码中,我们使用 Intl.NumberFormat
方法来格式化货币。第一个参数是区域设置,用于确定货币符号和千位分隔符。第二个参数是一个选项对象,它可以指定货币符号和其他格式化选项。
总结
在本文中,我们简要介绍了 ES11 中的数字和数字符号实现方法。其中 BigInt 类型、更好的数学方法和新的数字符号是 ES11 的重点特性之一。通过学习这些新的特性,开发人员可以更轻松地处理数字和货币的操作。希望这篇文章能够对你有所帮助,谢谢。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6478818b968c7c53b04bbde8