함수 선언식
function a () {}
함수 표현식
const a = function () {}
화살표 함수
const a = () => {}
함수 바디가 return
문 하나라면 return
키워드와 중괄호를 모두 생략할 수 있다.
const sum = (x, y) => x + y;
매개변수도 하나라면 매개변수를 감싸는 괄호도 생략이 가능하다.
const sum = x => x + x;
자바스크립트에서는 다른 함수 안에 함수를 중첩할 수 있다.
function hypotenuse(a, b) {
function square(x) { return x*x; }
return Math.sqrt(square(a) + square(b));
}
a()
, a(x, y)
o.m()
, o.m(x, y)
new Object()
, new Object;
call()
, apply()
메서드를 통해 간접적으로 호출(function() {
// 코드코드코드...
}()); // 함수 리터럴을 종료하고 즉시 호출한다.
function 앞에 있는 여는 괄호가 없다면 자바스크립트 인터프리터가 함수 선언으로 분석하기 때문에 반드시 필요하다.
어휘적 스코프란 함수가 호출 시점의 스코프가 아니라 자신이 정의된 시점의 변수 스코프를 사용하여 실행된다는 뜻.
argument를 받아 boolean 값을 반환하는 함수형 인터페이스.
함수에서도 length 프로퍼티가 있다.
정의된 매개변수 개수이며 보통 함수가 예상하는 인자 개수이다. 함수에 나머지 매개변수가 있다면 그 매개변수는 이 length 프로퍼티에 포함되지 않는다.
함수가 정의될 때 이름이 있었다면 그 이름, 또는 익명의 함수 표현식이라면 처음 생성됐을 때 할당된 변수나 프로퍼티 이름이다. 이 프로퍼티는 디버깅이나 에러 메세지에 유용하게 사용된다.