プログラミング入門(JavaScript) 関数に渡された引数をそのまま別の関数に渡したいとき

やりたいこと

hogeという関数では、nameとcodeという二つの引数を受け取って何かの処理をします。

そして、その二つの引数をそのままsaveCacheという関数に渡したいとします。

その場合は、apply を使うことでうまくいきます。

const hoge = function(name, code){
  // 何かの処理

  saveCache.apply(null, arguments)
}

const saveCache = function(name, code){
  console.log(name)
  console.log(code)
}


hoge('tamibouz', '001')

arguments には、引数を配列風のオブジェクトにしたものが入ります。

applyを使わない場合は、その配列風のオブジェクトがそのまま渡るのでうまくいきません。

const hoge = function(name, code){
  // 何かの処理

  saveCache(arguments)
}

const saveCache = function(name, code){
  console.log(name) //[Arguments] { '0': 'tamibouz', '1': '001' } になってしまう
  console.log(code) //undefined になってしまう
}


hoge('tamibouz', '001')