1、字符串的扩展
主要增加对大于0xFFFF
的码点的支持:
for...of
循环遍历
var text = String.fromCodePoint(0x20BB7);
for (let i = 0; i < text.length; i++) {
console.log(text[i]);
}
// " "
// " "
for (let i of text) {
console.log(i); //吉
}
这个遍历器最大的优点是可以识别大于0xFFFF
的码点
字符串的扩展函数
includes(), startsWith(), endsWith()增加的匹配功能,
padStart(),padEnd():如果不全,用指定字符补全字符串
repeat() 返回一个新字符串,表示将原字符串重复
n
次。
模板字符串
$("#result").append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
标签模板
重要应用,
过滤HTML字符串,防止用户输入恶意内容
多语言转换(国际化处理)
在JavaScript语言之中嵌入其他语言 jsx
//jsx语言
tag`Hello ${ a + b } world ${ a * b }`;
//等价于下面
tag(['Hello ', ' world ', ''], 15, 50)
i18n`Welcome to ${siteName}, you are visitor number ${visitorNumber}!`
// "欢迎访问xxx,您是第xxxx位访问者!"
String.raw()
String.raw
方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。
String.raw
方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。
String.raw
方法也可以作为正常的函数使用。这时,它的第一个参数,应该是一个具有raw
属性的对象,且raw
属性的值应该是一个数组。
2、数值的扩展
二进制和八进制表示法
ES6提供了二进制和八进制数值的新的写法,分别用前缀0b
(或0B
)和0o
(或0O
)表示。
0b111110111 === 503 // true
0o767 === 503 // true
number新增方法:
Number.isFinite():检查一个数值是否非无穷(infinity)。
Number.isNaN():检查一个值是否为NaN
Number.parseInt()
Number.parseFloat()ES6将全局方法
parseInt()
和parseFloat()
,移植到Number对象上面Number.isInteger() 判断一个值是否为整数
Number.EPSILON :极小的常量
Number.EPSILON
,的实质是一个可以接受的误差范围。安全整数和Number.isSafeInteger() JavaScript能够准确表示的整数范围在
-2^53
到2^53
之间(不含两个端点),超过这个范围,无法精确表示这个值。Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
这两个常量,用来表示这个范围的上下限。
math新增方法
Math.trunc():用于去除一个数的小数部分,返回整数部分
Math.sign(): 用来判断一个数到底是正数、负数、还是零。
Math.cbrt
方法用于计算一个数的立方根。Math.clz32
方法返回一个数的32位无符号整数形式有多少个前导0。Math.imul
方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。Math.fround方法返回一个数的单精度浮点数形式。
Math.hypot
方法返回所有参数的平方和的平方根
也新增下列函数
对数方法
三角函数方法
指数运算符
传统方法先调用Number()
将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,非数值一律返回false
。
3、数组的扩展
Array.from()
Array.from
方法用于将两类对象转为真正的数组
常见的类似数组的对象是DOM操作返回的NodeList集合,以及函数内部的arguments
对象。Array.from
都可以将它们转为真正的数组。
// NodeList对象
let ps = document.querySelectorAll('p');
Array.from(ps).forEach(function (p) {
console.log(p);
});
Array.of()
Array.of
方法用于将一组值,转换为数组。
Array() // []
Array(3) // [, , ,] 参数个数只有一个时,实际上是指定数组的长度。
Array(3, 11, 8) // [3, 11, 8]
Array.of
基本上可以用来替代Array()
或new Array()
,并且不存在由于参数不同而导致的重载。它的行为非常统一。
copyWithin()
数组实例的copyWithin
方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。
find()和findIndex()
数组实例的find
方法,用于找出第一个符合条件的数组成员。
fill()
fill
方法使用给定值,填充一个数组。 用于空数组的初始化非常方便。
entries(),keys()和values()
ES6提供三个新的方法——entries()
,keys()
和values()
——用于遍历数组。它们都返回一个遍历器对象
includes()
返回一个布尔值,表示某个数组是否包含给定的值,该方法属于ES7,但Babel转码器已经支持。
4、函数的扩展
使用函数参数的默认值,分别哪些参数是可以省略的
与解构赋值默认值结合使用
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。