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引入模塊的方式,一直沒有被放到標準