생성자와 new 키워드를 알아보다
- 함수에 new를 붙이면 리턴값은 객체 반환한다.(.을 붙혀서 key 값을 적용하면 :value 값 알 수 있음)
'객체반환'의 의미에 대해 찾아보았다. 리턴값은 객체 반환된다는 의미가 뭘까...?
new 뒤에 Person이라고 하는 생성자가 만들어놓은 빈 객체가 어떠한 프로퍼티와 메소드를 가져야하는지를 생성자 안에 기술하므로써 ('조은길') 그 객체가 할 수 있는 일을 세팅해주는 데, 이것을 초기화 라고 한다.
함수는 여러 가지 복잡한 동작들을 미리 정의하고 필요할 때 언제든 쉽게 사용할 수 있게 하는 것이 기본이지만, 함수를 호출한 지점에 함수를 호출한 결과로 어떤 특정한 값이 대체되게 할 수도 있다.
이때 이 값을 반환 값 또는 리턴 값(return value)이라고 부른다.
반환 값은 함수 내에서 return이라는 선언자를 활용한다.
그리고 이를 활용해 return값을 연산하는 문장을 return문이라고 부른다.
return문은 함수 내부에서 정해진 명령들을 실행하고 난 뒤에 다시 돌려준다 혹은 반환한다 라는 의미로 이해하면 된다. 예시 코드를 보면,
function addNumber(num1, num2) {
let sumNum = num1 + num2
}
let sumNum = 0
addNumber(2, 7)
console.log(sumNum); // 0
위 코드는 addNumber라는 함수에서 sumNum에 파라미터로 들어온 두 개의 합을 넣어주는 식이다. 그러나 sumNum라는 변수 선언, addNumber 함수 선언 그리고 출력을 했지만, 변수의 값은 0이 나온다.
이유는 매개변수는 함수 내부에서만 작동을 하고 함수 외부로 나가면 사라지는 특성 때문인데, 위 코드의 함수 내부에서의 sumNum과 외부에서의 sumNum은 전혀 상관이 없는 사이라는 뜻이다.
이때 함수 내부에서 일어난 일을 외부로 보내주는 것을 return 문이 한다.
return 문을 활용하여 위 코드를 바꿔보면 아래와 같다.
function addNumber(num1, num2) {
return num1 + num2
}
console.log(addNumber(2,7)) // 9
return 문을 통해 num1과 num2를 더해준 값이 함수 밖으로 나오게 되고, console.log에서 그 값을 출력해준다. 즉, return문은 어떤 값을 되돌려주는 output의 역할을 한다. (함수 호출 부분을 return문 뒤에 오는 값으로 대체한다.)
이렇게 return 문은 함수 내부에서 함수 외부로 값을 보내줄 때 꼭 써줘야 한다!
return을 작성하지 않아도 함수는 정상적으로 동작한다.
function getArtist() {
return 'IU';
}
console.log(getArtist()); // IU
당연히 return을 따로 작성하지 않은 함수의 기본 반환 값은 undefined다.
function getArtist() {
// ..return문이 없는 함수본문..
}
console.log(getArtist()); // undefined