随着 JavaScript 的发展,ES6 中新增了许多数字和日期的扩展方法,让我们在处理数字和日期时更加方便和高效。本文将对这些新特性进行解析,并提供一些应用场景示例,帮助读者更好地理解和应用这些方法。
数字扩展方法
1. Number.isInteger()
Number.isInteger()
方法用于判断一个值是否为整数,它会返回一个布尔值。与 parseInt()
方法不同的是,Number.isInteger()
不会将字符串转换为数字,而且只有在值为整数时才返回 true
。
console.log(Number.isInteger(5)); // true console.log(Number.isInteger(5.0)); // true console.log(Number.isInteger(5.1)); // false console.log(Number.isInteger("5")); // false
2. Number.isSafeInteger()
Number.isSafeInteger()
方法用于判断一个值是否为安全整数,即在 JavaScript 能够表示的范围内的整数。它会返回一个布尔值。
console.log(Number.isSafeInteger(9007199254740991)); // true console.log(Number.isSafeInteger(9007199254740992)); // false
3. Number.parseFloat() 和 Number.parseInt()
Number.parseFloat()
和 Number.parseInt()
方法分别用于将字符串转换为浮点数和整数。它们与全局方法 parseFloat()
和 parseInt()
的区别在于,前者是 Number 对象的静态方法,后者是全局方法。
console.log(Number.parseFloat("3.14")); // 3.14 console.log(Number.parseInt("3.14")); // 3
4. Number.EPSILON
Number.EPSILON
属性表示 JavaScript 能够表示的最小精度,通常为 2 的 -52 次方。它可以用于比较两个浮点数是否相等。
console.log(0.1 + 0.2 === 0.3); // false console.log(Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON); // true
日期扩展方法
1. Date.now()
Date.now()
方法返回当前时间的时间戳,即距离 1970 年 1 月 1 日 00:00:00 UTC 的毫秒数。
console.log(Date.now()); // 1622673000000
2. Date.prototype.toISOString()
Date.prototype.toISOString()
方法将日期对象转换为 ISO 格式的字符串,例如 "2021-06-03T10:30:00.000Z"。
console.log(new Date("2021-06-03T10:30:00.000Z").toISOString()); // "2021-06-03T10:30:00.000Z"
3. Date.prototype.toUTCString()
Date.prototype.toUTCString()
方法将日期对象转换为 UTC 格式的字符串,例如 "Thu, 03 Jun 2021 10:30:00 GMT"。
console.log(new Date("2021-06-03T10:30:00.000Z").toUTCString()); // "Thu, 03 Jun 2021 10:30:00 GMT"
4. Date.prototype.toLocaleDateString() 和 Date.prototype.toLocaleTimeString()
Date.prototype.toLocaleDateString()
和 Date.prototype.toLocaleTimeString()
方法分别将日期对象的日期和时间部分转换为本地格式的字符串,例如 "6/3/2021" 和 "10:30:00 AM"。
console.log(new Date("2021-06-03T10:30:00.000Z").toLocaleDateString()); // "6/3/2021" console.log(new Date("2021-06-03T10:30:00.000Z").toLocaleTimeString()); // "10:30:00 AM"
应用场景示例
1. 判断浏览器是否支持安全整数
在编写 JavaScript 应用程序时,我们需要确保代码能够在不同的浏览器中正常运行。如果我们使用了超出 JavaScript 能够表示的整数范围的值,可能会导致程序出现异常。可以使用 Number.isSafeInteger()
方法来判断浏览器是否支持安全整数,从而避免这种情况的发生。
if (Number.isSafeInteger(9007199254740991)) { // 正常运行代码 } else { // 抛出异常或执行备选代码 }
2. 比较两个日期是否相等
在处理日期时,由于计算机存储日期的方式是以时间戳的形式进行的,因此可能会出现精度不足的情况。可以使用 Date.prototype.toISOString()
方法将日期对象转换为 ISO 格式的字符串,并使用 String.prototype.localeCompare()
方法比较两个字符串是否相等。
const date1 = new Date("2021-06-03T10:30:00.000Z"); const date2 = new Date("2021-06-03T10:30:00.001Z"); if (date1.toISOString().localeCompare(date2.toISOString()) === 0) { // 日期相等 } else { // 日期不相等 }
3. 将日期转换为本地格式的字符串
在显示日期时,我们通常需要将日期转换为本地格式的字符串,以便用户更好地理解。可以使用 Date.prototype.toLocaleDateString()
和 Date.prototype.toLocaleTimeString()
方法将日期对象的日期和时间部分转换为本地格式的字符串,并拼接在一起。
const date = new Date("2021-06-03T10:30:00.000Z"); const dateString = date.toLocaleDateString(); const timeString = date.toLocaleTimeString(); console.log(`${dateString} ${timeString}`); // "6/3/2021 10:30:00 AM"
总结
本文介绍了 ES6 中的数字和日期扩展方法,包括 Number.isInteger()
、Number.isSafeInteger()
、Number.parseFloat()
、Number.parseInt()
、Number.EPSILON
、Date.now()
、Date.prototype.toISOString()
、Date.prototype.toUTCString()
、Date.prototype.toLocaleDateString()
和 Date.prototype.toLocaleTimeString()
。我们还提供了一些应用场景示例,帮助读者更好地理解和应用这些方法。这些新特性可以让我们在处理数字和日期时更加方便和高效,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f4469c2b3ccec22fca4ce4