화살표 함수에서의 'this' 키워드 이해하기

Arrow functions are a popular feature in modern JavaScript that provide a more concise syntax for writing functions. One important difference between arrow functions and regular functions is how they handle the this keyword.

In regular functions, the value of this is determined by how a function is called. However, arrow functions do not have their own this value. Instead, they inherit the this value from the surrounding scope.

Let’s take a closer look at how this works with some examples.

Example 1: Regular Function

function regularFunction() {
  console.log(this);
}

// Calling the function
regularFunction(); // Output: Window

In a regular function, the value of this depends on how the function is invoked. When called in the global scope or without any specific object context, this refers to the global Window object.

Example 2: Arrow Function

const arrowFunction = () => {
  console.log(this);
};

// Calling the function
arrowFunction(); // Output: Window

In an arrow function, this is not bound to the function itself. Instead, it inherits the value of this from its surrounding scope, which in this case is the global scope.

Example 3: Object Method

const person = {
  name: "John",
  sayHi: () => {
    console.log(this.name);
  },
};

person.sayHi(); // Output: undefined

In the example above, even though sayHi is defined as a method within the person object, the arrow function does not have its own this value. Instead, it inherits the value of this from the surrounding scope, which is the global scope. As a result, this.name is undefined.

Conclusion

In summary, arrow functions in JavaScript do not have their own this value. Instead, they inherit the value of this from the surrounding scope. This behavior can sometimes lead to unexpected results, especially when using arrow functions as object methods. It is important to understand how this works in arrow functions to avoid potential issues in your code.

#JavaScript #ArrowFunctions