여기 좀 더 상위 정렬 함수가 있습니다.화살표 기능을 반환 할 수없는 이유는 무엇입니까?
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
이 여기에, 내가 화살표 기능이 insted 돌아 왔을 때, 작동하지 않습니다이 예상대로 작동하지만
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
그 화살표 기능이 느슨 알고, 그 이유 나는 여기에서 그것을 흉막 안에 넣으려고한다 ()
. 그것들도 없이는 작동하지 않습니다. MDN에서
'squareAndLog (5); // 결과는 NaN입니다. - 문제를 재현 할 수 없습니다. 이 코드를 실행하면 예외가 발생합니다. "ReferenceError : arguments is defined – Quentin
Arrow 함수 [arguments를 바인딩하지 않습니다.] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ 함수/Arrow_functions # No_binding_of_arguments), 두 번째 예제에서는 예상 한 것을 적용하지 않습니다. 대신에 ((... args) => ...를 사용하십시오. [this] (http://stackoverflow.com/ 질문/30935336/공식 정보 -에 - es6 - 화살표 기능에서) 및 [this] (http://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are -they-equivalent-exch) –