본문 바로가기
학습 log (이론)/javascript

'함수를 생성하는 3가지 방법' 함수와 프로토타입 체이닝

by abbear25 2016. 10. 14.

자바스크립트에서 함수도 일반 객체처럼 값으로 취급

모두 같은 함수를 생성하지만 각각의 방식에 따라 미묘한 동작 차이 발생


함수 선언문(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){ ... }


하지만 함수 표현식 형태로 정의할 경우에는 불가능

자바스크립트에서 변수 생성과 초기화의 작업이 분리돼서 진행함으로 발생됨

반응형