MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

function 선언(declaration)은 지정된 매개변수(parameter)로 함수를 정의합니다.

Function 생성자(constructor) 및 function 식(expression)을 사용해서 정의할 수도 있습니다.

구문

function name([param,[, param,[..., param]]]) {
   [statements]
}
name
함수 이름.
param
함수에 건네지는 인수(argument)명. 함수는 255개까지 인수를 가질 수 있습니다.
statements
함수의 몸통(body)을 구성하는 문(statement).

설명

function 선언으로 생성된 함수는 Function 객체이고 Function 객체의 모든 속성(property), 메서드 및 behavior를 갖습니다. Function 객체에 관한 더 자세한 정보는 Function 참조.

함수는 또한 식(function 식 참조)을 사용하여 생성될 수 있습니다.

기본(default)으로, 함수는 undefined를 반환합니다. 다른 값을 반환하기 위해서는, 함수는 반환값을 지정하는 return 문이 있어야 합니다.

조건부로 생성되는 함수

함수는 조건부로 선언될 수 있습니다. 즉 function 문은 if 문 내에 중첩될 수 있습니다. Mozilla 이외의 브라우저 대부분은 그러한 조건부(conditional) 선언을 무조건(unconditional) 선언으로 취급하고 조건이 참이든 아니든 함수를 만듭니다(이 글 참조). 따라서 조건부 선언은 사용되어서는 안됩니다, 조건부 생성이 function 식을 사용하기에.

함수 선언 hoisting

JavaScript에서 함수 선언은 함수 정의를 끌어올립니다(hoisting). 다음과 같이 선언되기 전에 함수를 사용할 수 있습니다.

hoisted(); // logs "foo"

function hoisted() {
  console.log("foo");
}

function 식은 끌어올림(hoisted) 되지 않음을 주의하세요:

notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function() {
   console.log("bar");
};

예제

function 사용하기

다음 코드는 제품 a, bc의 판매 대수가 주어졌을 때, 총 판매량을 반환하는 함수를 선언합니다.

function calc_sales(units_a, units_b, units_c) {
   return units_a*79 + units_b * 129 + units_c * 699;
}

스펙

스펙 상태 설명
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Function definitions' in that specification.
Draft  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Function definitions' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'Function definition' in that specification.
Standard  
ECMAScript 3rd Edition (ECMA-262)
The definition of 'Function definition' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'Function definition' in that specification.
Standard 초기 정의. JavaScript 1.0에서 구현됨.

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Allowed in sloppy mode 49.0        
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Allowed in sloppy mode No support

49.0

       

49.0

참조

문서 태그 및 공헌자

태그: 
 이 페이지의 공헌자: Netaras
 최종 변경: Netaras,