>  기사  >  웹 프론트엔드  >  Javascript의 명명된 화살표 함수와 익명 화살표 함수의 중요한 차이점(권장)

Javascript의 명명된 화살표 함수와 익명 화살표 함수의 중요한 차이점(권장)

高洛峰
高洛峰원래의
2017-02-03 13:57:401648검색

이름이 지정된 함수는 함수 abs(x){}라는 이름을 명시적으로 부여하는 함수를 나타냅니다. 익명함수란 function(){}처럼 abs와 같은 함수명이 없고 function이라는 키워드만 있는 함수를 말합니다. ES6 표준에는 Arrow Function이라는 새로운 기능이 추가되었습니다. Arrow 함수는 표면적으로 익명 함수와 동일하며 함수 정의를 단순화합니다. 그들 사이의 차이점은 무엇입니까?

1 명명된 함수와 익명 함수의 차이점

차이점: 익명 함수는 다른 변수 let a에 주소를 할당한 다음 명명된 함수가 필요한 동안 a를 사용하여 함수를 호출해야 합니다. 명시적으로 give 함수 이름이 포함되어 있으므로 이 함수 이름을 사용하여 직접 호출할 수 있습니다.

이름이 지정된 함수의 반환 값은 함수 본문의 반환 값입니다. 예를 들어, abs(x) 함수의 반환 값은 숫자 변수입니다. 함수를 호출할 때, abs(6)을 직접 호출하면 이해하기 매우 쉽습니다.

function abs(x){
 if(x>=0){
  return x;
 }else{
  return -x;
 }
}

그런데 익명 함수는 어떻습니까? 아래와 같이 함수가 함수 이름을 명시적으로 알려주지 않지만, 여기의 abs에는 이 익명 함수의 주소가 할당되어 있으므로 사용 시에는 abs(-3)을 직접 사용할 수 있는 등의 방식이 있습니다.

let abs=function(x){
 if(x>=0){
  return x;
 }else{
  return -x;
 }
}

2 Arrow Function

ES6 표준에는 Arrow Function이라는 새로운 기능이 추가되었습니다. 애로우 함수라고 불리는 이유는 무엇입니까? 정의가 화살표를 사용하기 때문입니다. 화살표 함수는 표면적으로는 익명 함수와 동일하며 함수 정의를 단순화합니다.

화살표 함수에는 두 가지 형식이 있습니다. 하나는 표현식이 하나만 포함되어 있고 {...}와 return도 생략된다는 것입니다.

x => x * x

위의 화살표 함수는 익명 함수 ""

function (x) {
 return x * x;
}

여러 문을 포함할 수 있는 함수도 있습니다. }를 생략하고 반환:

(x,y) => {
 if (x > 0) {
  return x + y;
 }
 else {
  return -x + y;
 }
}

3 화살표 함수와 익명 함수의 차이점

화살표 함수는 익명 함수의 약칭인 것 같습니다. , 그러나 실제로는 화살표 함수와 익명 함수 사이에는 명백한 차이가 있습니다. 화살표 함수 내부의 이는 컨텍스트에 따라 결정되는 어휘 범위입니다.

obj1.getAge(2017) 함수를 호출하고 obj2.getAge(2017) 함수를 호출하면 동일한 결과가 나오나요?

This.birth가 창 또는 정의되지 않음을 가리키는 JavaScript 함수의 잘못된 처리로 인해 obj1의 fn 함수가 예상한 결과를 얻을 수 없습니다.

그러나 obj2 및 fn 함수는 화살표 함수입니다. 이는 항상 외부 호출자 obj2인 어휘 범위를 가리킵니다.

var obj1 = {
 birth: 1990,
 getAge: function (year) {
  let fn=function(y){
   return y - this.birth; // this指向window或undefined
  };
  return fn(year);
 }
};
var obj2 = {
 birth: 1990,
 getAge: function (year) {
  var fn = (y) => y - this.birth; // this.birth为1990
  return fn(year);
 }
};

4 요약

네임드 함수와 비교하여 익명 함수는 주소를 다른 변수 let a에 할당한 다음 a를 사용하여 to를 사용해야 합니다. 함수를 호출하는 경우 익명 함수와 비교할 때 화살표 함수는 항상 어휘 범위를 가리키는 this의 지정을 완전히 수정합니다.

위 내용은 편집자가 소개한 Javascript의 명명된 익명 화살표 기능의 중요한 차이점입니다. 궁금한 사항이 있으면 메시지를 남겨주시면 편집자가 답변해 드리겠습니다. 당신은 시간에!

Javascript의 명명된 화살표 함수와 익명 화살표 함수의 더 중요한 차이점(권장)에 대해서는 PHP 중국어 웹사이트의 관련 기사에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.