함수를 인수로 사용하는 함수가있는 타사 라이브러리를 사용하고 있습니다. 특정 함수를 매개 변수로 추가할지 여부를 결정하기 위해 조건부 검사를 수행하고 있으며 경우에 따라 함수를 제공하고 싶지 않습니다. 이 경우 null을 제공하면 오류가 발생합니다.
작동하는 코드를 찾았지만 무슨 일이 일어나고 있는지 완전히 이해하지 못했습니다.
compose(__DEV__ ? devTools() : f => f)
인가 f => f
에 해당 () => {}
빈 익명 함수?
답변
f => f
비슷하다 function(f){ return f; }
너무 가깝지만 예상했던 것과는 다릅니다.
*-의견에서 지적했듯이 미묘한 차이가 있지만 귀하의 질문을 위해 특별히 관련성 이 없다고 생각 합니다. 그들은 다른 상황에서 매우 관련이 있습니다.
답변
f => f
는 IS 식별 기능 . 단순히 전달 된 인수를 반환합니다.
이 함수는 변환을 수행하지 않기 때문에 변환 프로세스의 기본값으로 자주 사용됩니다.
인가
f => f
에 해당() => {}
빈 익명 함수?
아니요. 빈 함수는 아무것도 반환하지 않습니다. identity 함수는 전달 된 인수를 반환합니다.
답변
f => f
의미 를 알고 싶다면 왼쪽이 매개 변수이고 오른쪽이 반환 값입니다. 예를 들어 f => f*2
는 다음과 같습니다.
function(f) {
return f * 2;
}
설명하는 코드는 입력으로 제공된 모든 것을 반환합니다.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
답변
다른 사람들은 이미 무엇을하는지 언급 f => f
했으므로 더 깊이 들어 가지 않겠습니다. 차이의 비트가 있기 때문에 그냥 함수의 나머지 부분을 설명 할게 f => f
하고__DEV__ ? devTools() : f => f
삼항 연산자는 __DEV__
값이 진실 인지 확인 하고 만약 그렇다면 function을 반환합니다 devTools()
. 그렇지 않으면 f => f
아무것도하지 않는 identity 함수 를 반환합니다 . 다르게 말하면이 코드는 일부 개발 모드 기능을 활성화합니다. 나머지 코드가 없으면이 모드가 무엇을 추가하는지 알기가 어렵지만 아마도 약간의 추가 로깅 정보와 덜 난독 화를 가능하게 할 것입니다.
답변
비슷한 딜레마가 있으면 언제든지 Babel 을 사용 하여 답을 얻을 수 있습니다 .
다음과 같이 반환되었습니다.
"use strict";
(function (f) {
return f;
});
BTW, => 사용하신 ES6 기능은 화살표 표현 입니다. 관심의 다른 표현
() => {}; // es6
다음으로 변환됩니다.
(function () {});
화살표 함수 표현식은 항상 익명 이므로 함수에 이름을 추가하면 의미가 있습니다.
let empty = () => {}; // es6
로 변환 할 것이다
var empty = function empty() {};