V8在v7.0版本後,支援了一些新的語法,如需驗證以下語法,需使用對應的支援版本
chrome 最新版本支援到v7.1, chrome金絲雀版本支援v7.2 , Node.js 11.0.0版本後支援到v7.0
v7.0 (2018.10.15)
新增:Symbol.description複製程式碼
v7.1 (2018.10.31)
相對時間函式
const rtf = new Intl.RelativeTimeFormat('en');
rtf.format(3.14, 'second');
// → 'in 3.14 seconds'rtf.format(-15, 'minute');
// → '15 minutes ago'// 本地化相對時間const rtf = new Intl.RelativeTimeFormat('zh', {
numeric: 'auto'
});
rtf.format(-1, 'day');
// → '昨天'rtf.format(0, 'day');
// → '今天'rtf.format(1, 'day');
// → '明天'rtf.format(-1, 'week');
// → '上週'rtf.format(0, 'week');
// → '本週'rtf.format(1, 'week');
// → '下週'複製程式碼
v7.2版本 (2018.12.18)
新增對公共 class 欄位(public class fields) 的支援,例如下面的舊寫法:
class Animal {
constructor(name) {
this.name = name;
}
}class Cat extends Animal {
constructor(name) {
super(name);
this.likesBaths = false;
} meow() {
console.log('Meow!');
}
}複製程式碼
現在可以寫成:
class Animal {
constructor(name) {
this.name = name;
}
}class Cat extends Animal {
likesBaths = false;
meow() {
console.log('Meow!');
}
}複製程式碼
V8 計劃支援 private class fields
class IncreasingCounter {
#count = 0;
// 私有屬性 get value() {
console.log('Getting the current value!');
return this.#count;
} increment() {
this.#count++;
}
}const counter = new IncreasingCounter();
counter.#count;
// → SyntaxErrorcounter.#count = 42;
// → SyntaxError複製程式碼
JSON.stringify 支援 Unicode 輸出
// 老版本會輸出無法解析的字元// 新支援後,輸出 '\uD800' 字串JSON.stringify('\uD800');
複製程式碼
資料格式化
const lf = new Intl.ListFormat('en');
lf.format(['Frank']);
// → 'Frank'lf.format(['Frank', 'Christine']);
// → 'Frank and Christine'lf.format(['Frank', 'Christine', 'Flora']);
// → 'Frank, Christine, and Flora'lf.format(['Frank', 'Christine', 'Flora', 'Harrison']);
// → 'Frank, Christine, Flora, and Harrison'const lf = new Intl.ListFormat('en', {
type: 'disjunction'
});
lf.format(['Frank']);
// → 'Frank'lf.format(['Frank', 'Christine']);
// → 'Frank or Christine'lf.format(['Frank', 'Christine', 'Flora']);
// → 'Frank, Christine, or Flora'lf.format(['Frank', 'Christine', 'Flora', 'Harrison']);
// → 'Frank, Christine, Flora, or Harrison'const lf = new Intl.ListFormat('zh');
lf.format(['永鋒']);
// → '永鋒'lf.format(['永鋒', '新宇']);
// → '永鋒和新宇'lf.format(['永鋒', '新宇', '芳遠']);
// → '永鋒、新宇和芳遠'lf.format(['永鋒', '新宇', '芳遠', '澤遠']);
// → '永鋒、新宇、芳遠和澤遠'複製程式碼
模組引入
### 以前import * as utils from './utils.js';
export {
utils
};
### 現在export * as utils from './utils.js';
複製程式碼
v8 與 nodejs 版本 Mapping
nodejs.org/zh-cn/downl…
如有語法遺漏,歡迎補充;
如有錯誤,歡迎指正。