(JS) this : Regular function call (일반 함수 실행)

호두파파·2021년 1월 6일
0

this

목록 보기
2/7

this는 함수가 "어떻게" 실행되는냐에 따라 바뀌는 값이기 때문에, 함수 실행 방식이 중요해집니다.
첫번째로 알아볼 함수 실행 방식은 "일반 함수 실행" 방식입니다.

var age = 10;

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

log();

위 예제에서 특별한 특징없이 함수 이름만을 이용해 실행하고 있습니다. 이것을 일반 함수 실행 방식이라 부르고, 이러한 경우 해당 함수의 this 값은 Global Object입니다.

var age = 10;

const hodoo = {
  age: 5,
  logAge: function () {
    console.log(this.age);
  }
};

const func = hodoo.logAge;

func();

this가 사용되는 함수는 hodoo라는 객체의 logAge라는 속성으로 할당되어 있습니다. 하지만 함수의 선언이나 할당은 this값과는 전혀 무관합니다.

해당 함수를 실행하는 부분은 func()입니다. 일반 함수 호출방식으로 실행되었습니다. 그렇기에 this값은 Global Object입니다.


❗️Strict Mode

ECMA SCRIPT 5에서 소개된 Strict Mode는 고의적으로 일반 코드와 다른 시멘틱을 가지고 있습니다. 최적화 작업을 어렵게 만드는 실수들을 바로잡는데, 실수를 오류로 바꿔놓음으로서 디버깅을 용이하게 만듭니다.
Strict Mode는 실수로 Global Object가 생성되는 것을 불가능하게 만듭니다

위 요약내용 처럼 Strict Mode에서 함수가 일반 함수 실행 방식으로 실행되었을 경우, this값은 Global Object가 아닌 undefined입니다.


정리

일반 함수 실행 방식일 경우, this 의 값은 아래와 같습니다.

  • Non Strict Mode: Global Object
  • Strict Mode: undefined
profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글