JavaScript 함수 정의

를 통해 정의됩니다. function JavaScript 함수는키워드을 정의할 수 있습니다.

를 사용할 수 있습니다.선언또는 함수표현식

함수 선언

이 튜토리얼에서 약간 이전에, 다음과 같은 문법을 통해 배웠습니다:선언함수:

function functionName(parameters) {
   실행할 코드
}

선언된 함수는 직접 실행되지 않습니다. "이후 사용을 위해 저장됨"으로 저장되고, 호출될 때 실행됩니다.

예제

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

직접 테스트해 보세요

세미콜론은 실행 가능한 JavaScript 문장을 구분합니다.

함수가선언함수는 실행 가능한 문장이 아니며 세미콜론으로 끝나는 것이 일반적이지 않습니다.

함수 표현식을 사용할 수 있습니다.

JavaScript 함수는표현식로 정의할 수 있습니다.

함수 표현식은 변수에 저장될 수 있습니다:

예제

var x = function(a, b) {return a * b};

직접 테스트해 보세요

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

예제

var x = function(a, b) {return a * b};
var z = x(4, 3);

직접 테스트해 보세요

위의 함수는 실제로는 이렇게 되어 있습니다익명 함수(이름이 없는 함수)。

변수에 저장된 함수는 함수 이름이 필요하지 않습니다. 항상 변수 이름을 사용하여 호출합니다.

위 함수는 세미콜론으로 끝나기 때문에 그것은 실행 가능한 문장의 일부입니다.

Function() 구조체를 통해 정의됩니다.

이전 예제에서 보았듯이, JavaScript 함수는 function 로 정의된 키워드를 통해 정의할 수 있습니다.

함수는 이름을 Function() 를 사용하여 정의할 수 있습니다。

예제

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

직접 테스트해 보세요

실제로 함수 생성자를 사용하지 않아도 됩니다. 위의 예제와 같이 작성하면 됩니다:

예제

var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

직접 테스트해 보세요

대부분의 경우 JavaScript에서 new 키워드를 사용하지 않아도 됩니다 new 키워드입니다。

함수 提升

이 튜토리얼에서 조금 전에 "提升"(hoisting)을 배웠습니다。

Hoisting은 JavaScript가선언의존성을 최소화하는 기본 행동입니다。

Hoisting은 변수 선언과 함수 선언에 적용됩니다。

따라서 JavaScript 함수는 선언 전에 호출될 수 있습니다:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

표현식으로 정의된 함수는 提升되지 않습니다。

자기 호출 함수

함수 표현식은 "자기 호출"으로 사용될 수 있습니다。

자기 호출 표현식은 호출되지 않는 상태에서 자동으로 호출됩니다

함수 표현식은 표현식 뒤에 ()

함수 선언에 자기 호출을 할 수 없습니다。

함수 표현식을 나타내기 위해 함수 주변에 괄호를 추가해야 합니다:

예제

(function () {
    var x = "Hello!!";      // 나를 호출할 것입니다
})();

직접 테스트해 보세요

위의 함수는 실제로는 이렇게 되어 있습니다익명의 자기 호출 함수(이름이 없는 함수)。

함수는 값으로 사용될 수 있습니다

JavaScript 함수는 값으로 사용될 수 있습니다:

예제

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3);

직접 테스트해 보세요

JavaScript 함수는 표현式中 사용될 수 있습니다:

예제

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3) * 2;

직접 테스트해 보세요

함수는 객체입니다

JavaScript에서의 typeof 연산자는 함수에 대해 "function"。

하지만 JavaScript 함수를 객체로 설명하는 것이 더 좋습니다。

JavaScript 함수는 모두 있습니다속성메서드

arguments.length 함수가 호출될 때 받은 매개변수의 개수를 반환합니다:

예제

function myFunction(a, b) {
    return arguments.length;
}

직접 테스트해 보세요

toString() 함수를 문자열로 반환하는 방법:

예제

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

직접 테스트해 보세요

객체 속성으로 정의된 함수는 객체 메서드라고 합니다.

새 객체를 생성하기 위해 설계된 함수는 객체 생성 함수(객체 생성기)라고 합니다.

화살표 함수

화살표 함수는 함수 표현식을 작성하기 위해 짧은 문법을 사용할 수 있도록 합니다.

function 키워드, return 키워드 및 괄호를 사용하지 않아도 됩니다.

예제

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

직접 테스트해 보세요

화살표 함수는 자신의 this를 가지지 않습니다. 이는 객체 메서드로 정의하는 데 적합하지 않습니다.

화살표 함수는 승천되지 않습니다. 사용 전에 정의해야 합니다.

const는 var보다 안전합니다. 함수 표현식은 항상 상수 값입니다.

함수가 단일 문장이면 return 키워드와 괄호를 제외할 수 있습니다. 따라서 그들을 유지하는 것이 좋은 습관일 수 있습니다:

예제

const x = (x, y) => { return x * y };

직접 테스트해 보세요

IE11 또는 이전 버전은 화살표 함수를 지원하지 않습니다.