학습 log (이론)/javascript

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

abbear25 2016. 10. 14. 03:13

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

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


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


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

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

반응형