JavaScript : 화살표 함수

함수는 특정 작업 번들을 이름으로 함께 수행하는 명령문의 집합입니다. 함수는 JavaScript의 기본 빌딩 블록 중 하나입니다. 함수 정의는 함수 키워드 다음에 함수 이름, 괄호로 묶인 매개변수 목록 및 중괄호로 묶인 함수 문으로 구성됩니다.

// Example of a function declaration
function displayName(fname, lname) {
    console.log(`${fname} - ${lname}`)
}


함수 표현식을 사용하여 함수를 생성할 수도 있습니다.

//Example of function expression
let displayName = function(fname, lname){
    console.log(`${fname} - ${lname}`)
};


ES6에서는 화살표 함수라고 하는 함수를 생성하는 또 다른 방법이 도입되었습니다.

화살표 함수 구문


  • 매개변수 => 표현식
  • (parameter1, parameter2..) => 식
  • 매개변수1 => {
    //문장1
    //문장2
    //....
    }

  • (매개변수1, 매개변수2..) => {
    //문장1
    //문장2
    //....
    }

  • let arrFun = (argA, argB...) => expression; 
    


    위의 화살표 함수에 해당하는 것은

    let arrFun = function(argA, argB...) {
      return expression;
    };
    


    어떻게 함수를 화살표 함수로 만들 수 있습니까?



    예를 들어 설명하겠습니다. 먼저 화살표 함수와 비교할 일반 함수를 선언합니다. 함수는 두 개의 인수를 취하고 인수를 곱하면 결과가 반환됩니다. 코드는 아래에 나와 있습니다.

    // Normal function
    function doSomething(varA, varB){
        let result = varA * varB;
        console.log(`${result}`);
        return result/2
    }
    


    이제 위의 함수에 해당하는 화살표 함수를 만들어 보겠습니다. 화살표에 해당하는 방식으로 위의 코드를 편집하여 수행할 것입니다. 먼저 function 키워드를 제거한 다음 인수를 괄호로 묶습니다. 인수가 없으면 빈 괄호가 사용되며, 하나의 인수만 전달되면 괄호를 생략할 수 있습니다. 그런 다음 T_DOUBLE_ARROW(=>)를 사용하고 함수 코드는 중괄호로 묶습니다. 문장이 하나만 있는 경우 중괄호도 생략할 수 있습니다. 함수 문이 중괄호로 묶이지 않은 경우 화살표 함수에는 암시적 반환이 있으므로 return 키워드를 화살표 함수 내에서 생략할 수 있습니다. 이에 상응하는 화살표 기능 코드가 아래에 나와 있습니다.

    // Arrow function
    let doSomething = (varA, varB) => {
        let result = varA * varB;
        console.log(`${result}`);
        return result/2
    


    더 많은 화살표 기능 예제가 아래에 나와 있습니다.

    // Normal Function
    function square(x) {
        return x * x;
    }
    //Arrow function
    let square x => x*x;
    
    // Normal Function
    function add(x,y){
        return x + y;
    }
    //Arrow function
    let add = (x,y) => x+y
    
    //Normal function
    function() {
        return a *10;
    }
    //Arrow function
    () => a * 10
    


    다른 예를 살펴보겠습니다.

    let object1 = {
        fname : "kiran",
        lname : "raj",
        greet : function(){
            console.log(`${this.fname} ${this.lname}`)
        },
        arrow_greet : () => console.log(`${this.fname} ${this.lname}`, this)
    }
    
    object1.greet();       //kiran raj
    object1.arrow_greet(); //undefined undefined window
    


    위의 예에서는 greetarrow_greet 메서드에 집중합니다. Greeting은 arrow_greet가 Greeting 함수와 동등한 화살표이기 때문에(이가 가리키는 위치를 확인하기 위해 console.log 문에 this를 추가했습니다) Greeting 메서드는 제대로 작동하지만 arrow_greet에서 출력은 undefined undefined로 인쇄됩니다. 이것은 창 전역 개체를 가리킵니다. 이 예제는 화살표 함수에 this 에 대한 자체 바인딩이 없음을 분명히 보여줍니다. 이 때문에 화살표 함수를 메서드로 사용하지 않는 것이 좋습니다.

    요약


  • 화살표 기능에는 이에 대한 자체 바인딩이 없습니다.
  • 화살표 함수를 메서드로 사용하면 안 됩니다.
  • Arrow 함수는 super에 대한 자체 바인딩이 없습니다.
  • 화살표 함수는 생성자로 사용할 수 없습니다.
  • 좋은 웹페이지 즐겨찾기