[javascript] 익명 JavaScript 함수 f => f는 정확히 무엇을합니까?

함수를 인수로 사용하는 함수가있는 타사 라이브러리를 사용하고 있습니다. 특정 함수를 매개 변수로 추가할지 여부를 결정하기 위해 조건부 검사를 수행하고 있으며 경우에 따라 함수를 제공하고 싶지 않습니다. 이 경우 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() {}; 


답변