...
ドット3つ let array = [ 1, 2, 3 ]
let result = [ 0, ...array ]
配列やオブジェクトの展開操作を楽にしてくれます。
let array = [ 1, 2, 3 ]
let result = [ 0, ...array ]
console.log(result)
// => [0, 1, 2, 3]
let obj1 = { potato: 2, carrot: 3, onion: 5, niku: 8 }
let obj2 = { water: 65535, spice: Infinity }
let result = { ...obj1, ...obj2 }
console.log(result)
// => { "potato": 2, "carrot": 3, "onion": 5, "niku": 8, "water": 65535, "spice": Infinity }
function createUser(firstName, lastName, bornYear, bornMonth, bornDay) {
// doSomeProcess
}
let name = ['Colonel', 'Sanders']
let birthday = [1890, 9, 9]
let user = createUser(...name, ...birthday) // => createUser('Colonel', 'Sanders', 1890, 9, 9) を実行するのと同じ
!!
ビックリマーク2つ ビックリマークふたつの記法もあるのか!!とびっくりびっくりしたことがあります。
function hasName (user) {
return ( user.name !== undefined && user.name !== null && user.name !== '' )
}
function hasName (user) {
return !!user.name
}
(おまけ) いろんな値の truthy / falsy について
- truthy (Boolean にキャストすると true となる) の例
- true
- 0 以外の Number (ex: 1, -1, 3.14, -273.15, 6.02e+23, etc)
- Infinity と -Infinity
- 空でない文字列 (例: "a", "false")
- [] (空の Array)
- {} (空の Object)
- 1 == true (緩やかな比較)
- falsy (Boolean にキャストすると false となる) の例
- false
- 0 (Number)
- "" (空の String)
- null
- undefined
- NaN
- 1 === true (厳密な比較)
- 空文字列は falsy だが、空の配列や空のオブジェクトは truthy
- “false” や 配列 [false] などは truthy
() => {}
関数のアロー記法 function
という予約語を使うのが常でした。setTimeout(function() {
console.log('Hello!')
})
() => {}
を使って書くこともできるようになりました。setTimeout(() => {
console.log('Hello!')
})
function
と () => {}
どちらを使ってもよいのですが、1つだけ挙動の異なる点があるので注意が必要です。何が異なるのかというと、メソッド内での
this
の扱いです; function () {}
の場合はメソッドの呼び出し元のオブジェクトを指しますが、 () => {}
の場合はメソッドが記述された文脈上のオブジェクトを指します。つまり、 function () {}
の場合は this
が動的に変わるのに対して () => {}
の場合は this
が固定されます。
`${}`
テンプレートリテラル printf
のようなメソッド。メソッド名は言語によって様々ですが、世の中の大半の言語で提供されている構文です。`
で囲います。 (バックチックを約物に用いる言語ってあまりなかった気が…)${}
と書きます。let username = `山田太郎`
let message = `ようこそ、${username}さん!`
console.log(message) // => "ようこそ、山田太郎さん!"
let body = `${client.name}様
いつも大変お世話になっております。
${company.name}の${staff.name}です。
${message.content}`
console.log(body) // => "山田太郎様\n\nいつも大変お世話になっております。\n〇〇株式会社の...