ES6学习笔记
变量的解构赋值
1.圆括号使用
var [(a)] = [1]; //报错,变量声明语句中,不能带有圆括号。
[(a)] = [1]; //正确,模式是取数组的第一个成员,跟圆括号无关。
2.遍历Map结构
任何部署了Iterator接口的对象,都可以用for...of
循环遍历。Map结构原生支持Iterator接口,配合变量的解构赋值,获取键名和键值就非常方便。
var map = new Map(); map.set('first', 'hello'); map.set('second', 'world'); for (let [key, value] of map) { console.log(key + " is " + value); } // first is hello // second is world
注意:map.first = 'hello';
map.second = 'world';
这样的赋值方式不具有Iterator接口,所以无法使用上述方法遍历map和取key/value值。
3.字符的Unicode表示法
ES6之前JavaScript允许使用\uxxxx表示一个字符,其中"xxxx"表示字符的码点,但这种方法只限于\u0000~\uFFFF之间的字符,超出范围需拆分为两个字节的形式表示。
eg:
"\uD842\uDFB7" // "𠮷" "\u20BB7" // " 7"
原因是20887超出FFFF的范围,JavaScript会将它理解为2088+7,而\u2088是一个不可打印的字符,所以显示出来是' 7'。
ES6的改进是,只要将码点放入大括号内就能正确解读字符。
eg:
"\u{20BB7}"
// "𠮷"
let hello = 123;
hell\u{6F} // 123
'\u{1F680}' === '\uD83D\uDE80'
// true
最后一个例子表明,ES6的大括号表示法与之前的4字节UTF-16编码是等价的。