node进步很快,一年前,我用的还是node 4.x LTS,现在都 node 6.x LTS了,而node 7.x也在开发中,node 8.x已经也展开了。
node 6.x已经到了node 6.10.2了,则7.x也到了7.9.0了
对比后,这里把发现的差异列一下
n次方运算符 **
例如
let a = 2 ** 3; console.log(a); //显示为8
let b = 3; b **= 4; console.log(b); //显示为81
let c = Function("return 5**2");
console.log(c()); //显示为25
- 6.10.2 需要–harmony 标志
- 7.9.0 支持
Object.values和Object.entries
6.10.2支持Object.keys,但是不支持 values和entries
let a = { a: 100, b: '2423423', c: 'jjj' };
let k = Object.keys(a);
let v = Object.values(a);
let e = Object.entries(a);
console.log(k); //显示为:[ 'a', 'b', 'c' ]
console.log(v); //显示为:[ 100, '2423423', 'jjj' ]
console.log(e); //显示为:[ [ 'a', 100 ], [ 'b', '2423423' ], [ 'c', 'jjj' ] ]
这个功能在很多地方,都很用了,可以不需要lodash了
- 6.10.2 需要–harmony 标志
- 7.9.0 支持
String的padStart和padEnd
在显示时间的时候,我们需要对齐显示 如2017-04-26 23:01:01这样显示比较整齐,如果显示为2017-4-26 23:1:1就不好看了,之前都是我们自己写pad函数,但是node支持这个功能了
console.log('1'.padStart(2,'00')); //显示为 '01'
console.log('2'.padEnd(2,'00')); //显示为 '20'
console.log('1234'.padStart(10)); //显示为 ' 1234'
console.log('1234'.padEnd(10)); //显示为 '1234 '
console.log('abc'.padEnd(10,'0123456789')); //显示为 'abc0123456'
console.log('abc'.padStart(10,'0123456789'));//显示为 '0123456abc' //其它的使用办法,大家就自己研究了
- 6.10.2 需要–harmony 标志
- 7.9.0 需要–harmony 标志
async和await
这个是es2017最重要的特性了,有了它,写异步程序就方便多了
//一个延时指定时间的函数
async function aaa_sleep(time) {
return new Promise(function (resolve) {
setTimeout(() => {
resolve();
console.log("finish", new Date());
}, time);
});
}
async function m() {
console.log(new Date());
await aaa_sleep(2000);
console.log(new Date());
}
m(); //注意:await一定要在async函数中出现,不然会报错
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
等LTS版本出来了,就可以放弃babel来编译了,可惜import引入模块的方式,一直没有被放到标准