I have a little higher-order sorta function here.
While this works as expected:
var square = (a) => a * a;
var callAndLog = (func) => {
  return function () {
    var res = func.apply(undefined, arguments);
    console.log("Result is: " + res);
    return res;
  }
};
var squareAndLog = callAndLog(square);
squareAndLog(5);  // Result is 25
This here, when i return an arrow function insted, doesn't work:
var square = (a) => a * a;
var callAndLog = (func) => {
  return (() => {
    var res = func.apply(undefined, arguments);
    console.log("Result is: " + res);
    return res;
  })
};
var squareAndLog = callAndLog(square);
squareAndLog(5); // Result is NaN
I know that arrow functions are loose, that's why i try here returning it within the parantheses (). It doesn't work without them either.
 
     
     
    