1. 程式人生 > >ES6的7個實用技巧

ES6的7個實用技巧

Hack #1 交換元素

利用陣列解構來實現值的互換

let a = 'world', b = 'hello'
[a, b] = [b, a]
console.log(a) // -> hello
console.log(b) // -> world

Hack #2 除錯

我們經常使用console.log()來進行除錯,試試console.table()也無妨。

const a = 5, b = 6, c = 7
console.log({ a, b, c });
console.table({a, b, c, m: {name: 'xixi', age: 27}});

Hack #3 單條語句

ES6時代,運算元組的語句將會更加的緊湊

// 尋找陣列中的最大值
const max = (arr) => Math.max(...arr);
max([123, 321, 32]) // outputs: 321
// 計算陣列的總和
const sum = (arr) => arr.reduce((a, b) => (a + b), 0)
sum([1, 2, 3, 4]) // output: 10

Hack #4 陣列拼接

展開運算子可以取代concat的地位了

const one = ['a', 'b', 'c']
const two = ['d', 'e', 'f']
const three = ['g', 'h', 'i']

const result = [...one, ...two, ...three]

Hack #5 製作副本

我們可以很容易的實現陣列和物件的淺拷貝拷貝

const obj = { ...oldObj }
const arr = [ ...oldArr ]

拷貝 = 深拷貝 ? 淺拷貝 ?

好像有些朋友對這裡我說的淺拷貝有些質疑,我也能理解大家所說的。下面陣列為例:

// 陣列元素為簡單資料型別非引用型別
const arr = [1, 2, 3, 4];
const newArr = [...arr];

// 陣列元素為引用型別
const person01 = {name: 'name01', age: 1};
const person02 = {name: 'name01', age: 2};
const person03 = {name: 'name03', age: 3};

const arr = [person01, person02, person03];
const newArr = [...arr];
console.log(newArr[0] === person01);
// true

第二個 demo 就是我想表達的淺拷貝,若有不同意見歡迎討論~

Hack #6 命名引數???

解構使得函式宣告和函式的呼叫更加可讀

// 我們嚐嚐使用的寫法
const getStuffNotBad = (id, force, verbose) => {
  ...do stuff
}
// 當我們呼叫函式時, 明天再看,尼瑪 150是啥,true是啥
getStuffNotBad(150, true, true)

// 看完本文你啥都可以忘記, 希望夠記住下面的就可以了
const getStuffAwesome = ({id, name, force, verbose}) => {
  ...do stuff
}
// 完美
getStuffAwesome({ id: 150, force: true, verbose: true })

Hack #7 Async/Await結合陣列解構

陣列解構非常贊!結合Promise.all和解構和await會使程式碼變得更加的簡潔

const [user, account] = await Promise.all([
  fetch('/user'),
  fetch('/account')
])