# 함수는 데이터
- 함수를 변수에 할당할 수 있다
- 이러한 방식을 함수 리터럴 표기법(function literal notation)
예) 함수 리터럴 표기법
- function(){return 1;} 이 부분이 함수 표현식(function expression)
- 함수표현식은 이름을 가질 수 있으며, NFE(named function expression), 이름있는 함수표현식이 된다
- typeof 를 하게되면 "function" 문자열이 반환 (위의 사진 참고)
- 함수를 다른 변수에 복사할 수 있다
예)
- 변수의 이름지정규칙과 동일한 규칙 적용(숫자로 시작불가)
# 익명 함수(anonymous function)
- 익명함수를 매개변수로 다른 함수에 전달가능
- 함수이름이 없음
- 익명 함수를 정의하고 바로 실행 가능
예)
# 콜백 함수(callback function)
- 다른 함수의 인수로 전달가능
- 함수 A를 B에 전달하고, B가 A를 실행하면 콜백(callback)함수
- A가 이름이 없으면 '익명 콜백함수'
- 콜백함수의 이점
이름을 지정할 필요 없이 전달가능, 변수가 적어짐
작성할 코드가 적어짐
실행 연기 또는 호출 차단 해제로 성능을 향상시킴 (비동기방식)
비동기 방식이란?
참고 : http://private.tistory.com/24
예) 콜백함수의 예
예제) addOne 함수를 인수로 넘겼다
예제) addOne 함수없이 익명함수로 콜백 , 결과는 위와 동일
# 즉시 실행 함수(immediate function or self-invoking function)
- 함수가 정의되는 즉시 호출
- 사용방법
예) 3가지 방법
- 추가 전역 변수를 생성하지 않고도 작업을 수행할 수 있다.
- 일회성, 초기화작업
심화
즉시실행함수에 이름을 붙여서 변수에 저장하지않고 재귀함수 표현 가능
# 내부(비공개) 함수
- 다른 함수 안에서 함수를 정의 할 수 있다
- 이름 충돌이 발생할 가능성이 줄어든다
- 개인정보 보호 : 필요한 함수만 외부에 노출시키고 사용하지 않는 함수는 보이지않게 함
예) inner(4) 를 호출하려하면 not defined 에러가 발생
# 함수를 반환하는 함수
- 함수는 항상 값을 반환
- return 을 기술하지않으면 암시적으로 undefined 반환
- 함수도 반환가능
예)
aa() 호출에 의해 반환된 함수를 변수 bb 에 저장
bb() 호출
예) aa()(); 를 해줌으로써 변수 bb 를 절약 결과는 동일
'복습 > Javascript' 카테고리의 다른 글
[Javascript] 객체지향 자바스크립트 [객체 part 1] (0) | 2018.02.08 |
---|---|
[Javascript] 객체지향 자바스크립트 [클로저] (0) | 2018.02.07 |
[Javascript] 객체지향 자바스크립트 [함수, 호이스팅, 블록범위] (0) | 2018.02.06 |
[Javascript] 객체지향 자바스크립트 [조건문, 반복문, 주석] (0) | 2018.02.05 |
[Javascript] 객체지향 자바스크립트 [원시 데이터형식, 배열] (0) | 2018.02.05 |