##したいこと
- 引数をオブジェクトで渡す
- 引数のデフォルト値を定める
- 関数側でキーを変数として定める
##Ruby
関数を定義するときrubyだと
def func(a: 1, b: 2)
p a, b
end
func(a: 2) #=> [2, 2]
みたいにできて便利
##JavaScript
これと同じことをJSでやろうとすると
let func = (options) => {
let a = options.a === undefined ? 1 : options.a;
let b = options.b === undefined ? 2 : options.b;
console.log(a, b);
}
func({a: 2}) //> 2, 2
のようになり冗長。
##結論
これをDRYにすると
@shiracamusさんからコメントいただきました。普通に同じキーを後に付け加えれば上書きできるんですね。その発想はなかったです。ありがとうございます。
let func = (options) => {
// let {a, b} = Object.assign({
// a: 1,
// b: 2
// }, options)
let {a, b} = {a: 1, b: 2, ...options}
console.log(a, b)
}
func({a: 2}) //> 2, 2