자바스크립크 함수 정의

자바스크립트 함수는 function 키워드와 함께 정의됩니다.

function 선언(declaration) 또는 function 표현식(expression)을 사용할 수 있습니다.


함수 선언(Function Declarations)

이전 자습서에서, 함수는 다음 구문으로 선언된다(declared)고 배웠습니다:

선언된 함수는 즉시 실행되지 않습니다. 이것은 “나중에 사용하기 위해 저장”되고, 이후에 호출될 때 실행됩니다.

Example

이 예제는 계산을 수행하는 함수를 호출하고, 결과를 반환합니다:

12

세미콜론은 실행 가능한 자바스크립트 문(statements)을 구분하는데 사용됩니다.
함수 선언(declaration)은, 실행문(executable statement)이 아니기 때문에, 세미콜론으로 끝내지 않습니다.


함수 표현식(Function Expressions)

자바스크립트 함수는 표현식(expression)을 사용하여 정의할 수도 있습니다

함수 표현식(function expression)은 변수(variable)에 저장됩니다:

Example

함수는 변수에 저장할 수 있습니다:

function (a, b) {return a * b}

함수 표현식을 변수에 저장한 후에, 변수는 함수로 사용됩니다:

Example

12

위의 함수는 실제로는 익명 함수(anonymous function)(이름이없는 함수)입니다..

변수에 저장된 함수에는 함수 이름(function names)이 필요하지 않습니다. 항상 변수 이름(variable name)을 사용하여 호출됩니다.



Function() 생성자(Constructor)

이전 예제에서 보았듯이, 자바스크립트 함수는 function 키워드로 정의됩니다.

함수(Functions)는 Function()이라는 내장 자바스크립트 함수 생성자(built-in JavaScript function constructor)로 정의할 수도 있습니다.

Example

자바스크립트에는 내장 함수 생성자(built-in function constructor)가 있습니다.

12

실제로 함수 생성자(function constructor)를 사용할 필요는 없습니다. 위의 예는 다음에 작성한 코드와 같습니다:

Example

12


함수 호이스팅(Function Hoisting)

자습서 앞 부분에서, “호이스팅(hoisting)”에 대해서 배웠습니다.

Hoisting은 선언(declarations)을 현재 영역의 맨 위로 이동시키는 자바스크립트의 기본 동작(default behavior)입니다.

호이스팅은 변수 선언(variable declarations) 및 함수 선언(function declarations)에 적용됩니다.

이 때문에 자바스크립트 함수는 선언되기 전에 호출될 수 있습니다:

표현식(expression)을 사용하여 정의된 함수는 호이스팅(Hoisting)되지 않습니다.


자체 호출 함수(Self-Invoking Functions)

함수 표현식은 “자체 호출(self-invoking)”할 수 있습니다.

자체 호출 표현식은, 호출되지 않고, 자동으로 호출됩니다.

식에 ()가 붙으면, 함수 표현식(Function expressions)은 자동으로 실행됩니다..

함수 선언(function declaration)을 자체 호출할 수는 없습니다.

함수 주위에 괄호를 추가하여, 함수 표현식(function expression)임을 나타낼 수 있습니다:

Example

함수는 호출되지 않고 자동으로 호출됩니다:

Hello! I called myself

위의 함수는 실제로는 익명 자체 호출 함수(anonymous self-invoking function) (name없는 함수)입니다.


함수(Functions)를 값(Values)으로 사용할 수 있습니다

자바스크립트 함수는 값으로 사용될 수 있습니다:

Example

함수가 값으로 취급될 수 있습니다:

x = myFunction(4,3) 또는 x = 12

두 경우, x는 값 12를 가지는 숫자입니다.

12

표현식(expressions)에 자바스크립트 함수가 사용될 수 있습니다:

Example

함수는 표현식(expressions)안에 사용될 수 있습니다.

24


함수(Functions)는 객체(Objects)입니다

자바스크립트의 typeof 연산자는 함수(function)에 대해 “function”을 반환합니다.

그러나 자바스크립트 함수는 객체로 가장 잘 설명할 수 있습니다.

자바스크립트 함수에는 속성(properties)메소드(methods)가 있습니다.

arguments.length 속성은 함수가 호출될 때,받은 인수의 갯수를 반환합니다:

Example

arguments.length 속성은 함수가 받은 인수(arguments)의 갯수를 반환합니다:

2

toString() 메소드는 함수를 문자열로 반환합니다:

Example

function myFunction(a, b) { return a * b; }

객체의 속성(property of an object)으로 정의된 함수는 객체에 대한 메소드(method )라고합니다.
새 객체(new objects)를 생성하는 함수를 객체 생성자(object constructor)라고합니다.

출처: JavaScript Function Definitions ❮ PreviousNext ❯

댓글 남기기