# 함수 특징 (3)
출처: https://medium.com/ibare-story/e252506f8525
10. 함수호출하는 3가지 방법 - 이름, call, apply
- 함수가 호출될 때 함수에게 전달되는 모든 인수를 담은 arguments 유사 배열과 함께 this도 암시적으로 전달
=> this는 함수를 호출한 컨텍스트를 가르키며 전역 공간에서 호출될 땐 전역 객체를 가르킴
=> ex) 브라우저 환경이라면 window 객체
=> 객체의 메소드로서 함수가 호출되면 this는 객체를 가르킴
- addAge의 this는 암묵적으로 함수 호출시 전달된 객체
=> 객체의 메소드인 경우 객체 그 자체
- this는 person 이라고 설명해도 문제는 없지만 자바스크립트는 this가 지시하는 대상을 변경할 수 있는 유연성을 제공
- 객체 내부에서 사용하는 this가 호출시점의 실행 컨텍스트를 가르키며 이는 함수가 어떻게 호출되는가에 따라 this가 달라질 수 있다는 것
11. apply
- call과 똑같이 동작
- 두번째 인수, 즉 호출할 함수에게 전달할 인수 목록을 배열로 받음
- 호출할 함수가 가변 인수를 받는 함수라면 배열을 전달하는 apply를 사용하면 손쉽게 처리 가능
12. bind
ECMAScript 5 스펙에 추가된 bind 메소드는 함수와 객체를 연결시킴
13. 1급 함수
- 함수도 변수에 할당 가능
=> 함수의 인수로 전달 가능,
=> 함수의 반한값이 될 수 있음
- 변수에 할당된 함수의 호출은 일반적인 함수의 호출과 같은 방식으로 작동
14. 이름 없는 익명 함수
- 함수의 이름이 필요 없다면 기술하지 않아도 됨
- 이름없는 익명 함수를 참조하고 있는 foo를 이용하여 마치 foo 라는 함수를 호출하는 것과 같은 방식으로 호출할 수 있음
- 함수는 length 속성 이외에 name 속성도 제공
- 위 코드를 보면 익명 함수는 이름이 없다는 걸 확인 가능
- 위 코드는 객체 foo를 생성하며 addAge 메소드를 작성하며 익명 함수를 사용함
- 이 경우 addAge 속성이 존재함으로 함수의 이름이 불필요하기 때문에 이름이 없는 익명 함수를 사용
15. 즉시 실행 함수
- 익명 함수를 생성과 동시에 즉시 실행 가능
-단 한번만 수행되는 초기화 작업 등, 전역 공간의 오염 없이 수행하기 위한 방법으로 많이 사용
16. 지역 유효 범위 생성자로서의 함수
- var 구문 없이 생성된 변수는 전역 변수로 생성 됨
=> 지역 스코프에 존재하지 않고 함수의 수행이 종료된 후에도 전역 스코프에 잔류
=> 메로리 낭비됨
'javascript' 카테고리의 다른 글
객체 공부 (0) | 2017.09.13 |
---|---|
함수의 특징 (4) (0) | 2017.09.12 |
함수의 특징 (2) (0) | 2017.09.12 |
함수의 특징 (1) (0) | 2017.09.12 |
함수 특징 (0) | 2017.09.08 |