자바스크립트에서 함수도 일반 객체처럼 값으로 취급
모두 같은 함수를 생성하지만 각각의 방식에 따라 미묘한 동작 차이 발생
함수 선언문(function statement)
함수 리터럴 형태와 동일
반드시 함수명 정의
function add(a, b){
return a+b;
}
함수 표현식(function expression)
함수도 숫자나 문자열처럼 변수에 할당하는 방식
var add = function(a, b){
return a+b;
}
*익명함수, 위 함수와 같이 이름이 없는 함수
Function() 생성자 함수(function constructor)
위 두 방식은 내부적으로 생성자 함수를 호출하게 됨
코드작성에 잘 사용하지 않음
new Function('a', 'b', 'return a+b');
*미묘한 동작 차이
함수 끌어올리기(function hoisting)
함수의 선언문 형태로 정의한 함수의 유효 범위는 코드의 맨 처음부터
함수를 정의하기 전에 함수를 사용해도 됨
add(a, b);
function add(a, b){ ... }
하지만 함수 표현식 형태로 정의할 경우에는 불가능
자바스크립트에서 변수 생성과 초기화의 작업이 분리돼서 진행함으로 발생됨
반응형
'학습 log (이론) > javascript' 카테고리의 다른 글
'함수 객체의 기본 프로퍼티' 함수와 프로토타입 체이닝 (0) | 2016.10.15 |
---|---|
'함수도 객체다' 함수와 프로토타입 체이닝 (0) | 2016.10.14 |
'배열' 자바스크립트 기초 #4 (0) | 2016.10.12 |
'객체 프로퍼티' 자바스크립트 기초 #3 (0) | 2016.10.11 |
'객체를 생성하는 3가지 방법' 자바스크립트 기초 #2 (0) | 2016.10.08 |