zdhsoft 阅读(67) 评论(0)

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 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' ] ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这个功能在很多地方,都很用了,可以不需要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' //其它的使用办法,大家就自己研究了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 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引入模块的方式,一直没有被放到标准

  • 6.10.2 不支持
  • 7.9.0 支持