// 例子1
[...new Set(array)]複製代碼
// 例子2
const x = {
['a' + '_' + 'b']: 'z'
}
console.log(x.a_b); // z複製代碼
// 例子3
fetch('file.json')
.then(data => data.json())
.catch(error => console.error(error))
.finally(() => console.log('finished'));複製代碼
// 例子4
function fetch() {
try {
const data = JSON.parse(JSON.stringify(data))
} catch (err) {
console.log(err)
}
};複製代碼
// 例子5
// bad
(async () => {
const getList = await getList();
const getAnotherList = await getAnotherList();
})();
// good
(async () => {
const listPromise = getList();
const anotherListPromise = getAnotherList();
await listPromise;
await anotherListPromise;
})();
// good
(async () => {
Promise.all([getList(), getAnotherList()]).then(...);
})();複製代碼
// 例子6
// bad
Math.max.apply(null, [14, 3, 77])
// good
Math.max(...[14, 3, 77])
// 等同於
Math.max(14, 3, 77);複製代碼
剔除部分屬性,將剩下的屬性構建一個新的對象json
// 例子 7
let [a, b, ...arr] = [1, 2, 3, 4, 5];
const { a, b, ...others } = { a: 1, b: 2, c: 3, d: 4, e: 5 };複製代碼
// 例子 8
let obj1 = { a: 1, b: 2,c: 3 }
let obj2 = { b: 4, c: 5, d: 6}
let merged = {...obj1, ...obj2};複製代碼
// 例子 9
foo::bar;
// 等同於
bar.bind(foo);
foo::bar(...arguments);
// 等同於
bar.apply(foo, arguments);複製代碼
若是雙冒號左邊爲空,右邊是一個對象的方法,則等於將該方法綁定在該對象上面。數組
// 例子 9
var method = obj::obj.foo;
// 等同於
var method = ::obj.foo;
let log = ::console.log;
// 等同於
var log = console.log.bind(console);複製代碼
// 例子 10
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
console.log(baz); // "aaa"複製代碼
// 例子 11
// bad
function test(fruit) {
if (fruit == 'apple' || fruit == 'strawberry') {
...
}
}
// good
function test(fruit) {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
if (redFruits.includes(fruit)) {
...
}
}複製代碼