[전단 100문] Q58: 화살표 함수와 일반 함수(function)의 차이는 무엇입니까?구조 함수(function)는 new를 사용하여 실례를 생성할 수 있습니다. 그러면 화살표 함수는 가능합니까?왜?

1337 단어

앞에 써주세요.


이 시리즈는 개원 프로젝트에서 유래한 것이다. 전단 100문: 80%를 이해할 수 있는 이력서를 저에게 주십시오. 2021 봄 모집에 대비해 매일 한 문제씩 여러 각도에서 답을 정리하도록 독촉합니다. 풍부한 지식 화살표 함수와 일반 함수(function)의 차이점은 무엇입니까?구조 함수(function)는 new를 사용하여 실례를 생성할 수 있습니다. 그러면 화살표 함수는 가능합니까?왜?통합 주소: 프런트엔드 100 질문

본문 대답


화살표 함수는 일반 함수의 약자로 함수를 우아하게 정의할 수 있으며 일반 함수와 비교하면 다음과 같은 몇 가지 차이가 있다.
  • 함수 안에 있는 this 대상은 정의할 때 있는 대상이지 사용할 때 있는 대상이 아니다(정의할 때 있는 작용역의 this 값. JS의 정적 작용역의 메커니즘 때문에 this 일반 변수가 작용역 체인에 결과를 조회하는 것과 같고 정의할 때 있는 대상도 그 대상의 this 값과 같지 않다.
  • 대상arguments을 사용할 수 없습니다. 이 대상은 함수체에 존재하지 않습니다.를 사용하려면 rest 매개변수로 대체할 수 있습니다.
  • 명령은 사용할 수 없으므로 화살표 함수는 yield 함수로 사용할 수 없습니다.
  • 명령은 사용할 수 없습니다Generator
  • 자신의 것이 없으면 호출할 수 없음new, this.
  • 속성이 없고, call 명령이 실행될 때 구조 함수의 apply 값을 새로운 대상의 prototype
  • new 프로세스는 대체로 다음과 같습니다.
    function newFunc(father, ...rest) {
      var result = {};
      result.__proto__ = father.prototype;
      var result2 = father.apply(result, rest);
      if (
        (typeof result2 === "object" || typeof result2 === "function") &&
        result2 !== null
      ) {
        return result2;
      }
      return result;
    }
    

    좋은 웹페이지 즐겨찾기