1、do 表达式
块级作用域无法返回值,使用do之后,x可以获取到值
{
let t = f();
t = t * t + 1;
}
let x = do {
let t = f();
t * t + 1;
};
2、变量解构赋值
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []
3、注意,ES6内部使用严格相等运算符(===
),判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined
,默认值是不会生效的。如果一个数组成员是null
,默认值就不会生效,因为null
不严格等于undefined
。
var [x = 1] = [null]; x // null
4、Unicode表示法
'\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // true '\u007A' === 'z' // true '\u{7A}' === 'z' // true
5、codePointAt()
是测试一个字符由两个字节还是由四个字节组成的最简单方法。
function is32Bit(c) { return c.codePointAt(0) > 0xFFFF; } is32Bit("𠮷") // true is32Bit("a") // false
6、String.fromCodePoint
方法 与codePointAt()相反。