하루에 한 문제

함수 리턴 본문

Dev/JavaScript

함수 리턴

dkwjdi 2021. 4. 9. 22:04

자바스크립트에서 함수는 항상 리턴값을 반환한다. 심지어 return문을 사용하지 않아도 항상 리턴값을 전달한다.

 

규칙1) 일반 함수나 메서드는 리턴값을 지정하지 않을 경우, undefined 값이 리턴된다.

//noReturnFunc()함수
var noReturnFunc = function () {
    console.log("this function has no return");
};


var result = noReturnFunc();
console.log(result);

결과와 같이 return문이 없는 함수의 경우 undefined를 반환한다.

 

규칙2)생성자 함수에서 리턴값을 지정하지 않을 경우 생성된 객체가 리턴된다.

  • 이런 규칙때문에 대부분의 생성자 함수에서는 리턴값을 지정하지 않는다.
  • 하지만 생성자 함수에 리턴값을 처리하는 몇가지 예외사항이 있다!
  • 만약 생성자 함수에서 this로 바인딩되는 생성된 객체가 아닌 다른 객체를 리턴하면 어떻게될까?
//Person() 생성자 생성

function Person(name, age, gender) {
    this.name = name;
    this.age = age;
    this.gender = gender;

    //명시적으로 다른 객체 반환
    return { name: 'bar', age: 11, gender: 'man' };
}

var foo = Person('foo', 30, 'man');
console.dir(foo);

  • 당연하게도 리턴한 객체가 foo객체에 바인딩된다!
  • 하지만 생성자 함수의 리턴값으로 넘긴 값이 객체가 아닌 불린, 숫자, 문자열등의 경우는 이를 무시하고 this로 바인딩되게 된다.

 

참고

book.naver.com/bookdb/book_detail.nhn?bid=7400243

'Dev > JavaScript' 카테고리의 다른 글

실행 컨텍스트  (0) 2021.04.13
프로토타입 체이닝  (0) 2021.04.13
함수 호출과 this  (0) 2021.04.09
함수 객체의 기본 프로퍼티  (0) 2021.04.07
함수객체  (0) 2021.04.07
Comments