---
tags: JavaScript
---
# JavaScript 小筆記
## Destructuring
```javascript
let [a, b] = [10, 20]
console.log(a, b)
// 10, 20
// Rest pattern,一定要放在最後方
let [a, b, ...rest] = [10, 20, 30, 40, 50]
console.log(a, b, rest)
// 10, 20, [30, 40, 50]
// Ignore some values
let [a, ,b] = [1, 2, 3, 4]
console.log(a, b)
// 1, 3
// 新宣告的變數名與物件內的名稱相同
let { z, y, x } = { x: 1, y: 2, z: 3 }
console.log(x, y, z)
// 1, 2, 3
// 可定義對照的 key
let pets = { dog: '汪', cat: '喵', fish: '...'}
let { dog: petA, cat: petB, ...otherPets } = pets
console.log(petA)
// 汪
// Swap
let a = 1, b = 2;
[a, b] = [b, a]
console.log(a, b)
// 3, 1
```
## Array
```javascript
arr = [1]
arr.unshift(3) // arr = [3, 1], Add as the first element
arr.shift() // arr = [1], return = 3, Remove first element and return it
arr.push(3) // arr = [1, 3], Add as the last element
arr.pop() // arr = [1], return = 3, Remove last element and retur
```

## Spread
```javascript
let arr = [...[1, 2], ...[3, 4]]
console.log(arr)
// [1, 2, 3, 4]
let dict = {...{a: 1, b: 1}, ...{b: 2}}
console.log(dict)
// {a: 1, b: 2}
```
## Boolean
```javascript
> !!0 // Cast a variable to boolean
false
```