Skip to content

Instantly share code, notes, and snippets.

@kenmori
Created February 19, 2017 10:36
Show Gist options
  • Save kenmori/61d0d7d2a131df84d52043c146f652d3 to your computer and use it in GitHub Desktop.
Save kenmori/61d0d7d2a131df84d52043c146f652d3 to your computer and use it in GitHub Desktop.
HigherOrderFunction

問327

下記のような減算する関数subtractと加算する関数addがあります。

function add (x, y){
 return x + y;
}

function subtract(x, y){
 return x - y;
}

subtractかaddを渡すと実行結果をreturnする前にそれぞれの関数結果をconsole出力する汎用的な関数logAndReturnを実装してください

function add (x, y){
 return x + y;
}
function subtract(x, y){
 return x - y;
}
//HigherOrderFunction
function logAndReturn(func) {
 return function(){
   var args = Array.prototype.slice.call(arguments);//返した関数の引数を配列にする
   var result = func.apply(null, args);//渡された関数に引数を渡し実行する
   console.log(`Result:${result}`);
   return result;
 }
}

var addAndLog = logAndReturn(add);
addAndLog(4, 4);
//'Result:8'
var subtractAndLog = logAndReturn(subtract);
subtractAndLog(4, 3);
//'Result:1'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment