일련의 과정을 문으로 표현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것.
함수 내부로 입력을 전달받는 변수 -> 매개변수
입력 -> 인수
출력 -> 반환값
함수를 통해 중복코드를 제거하고 코드를 재사용 할 수 있다는 측면에서 유용하다.(코드의 재사용)
리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법.
즉, 값을 생성하기 위한 표기법이다.
따라서 함수 리터럴도 평가되어 값을 생성하며, 이 값은 객체다. 즉, 함수는 객체다.
일반 객체는 호출할 수 없지만 함수는 호출할 수 있다.
함수이름
매개변수 목록
함수 몸체
function 키워드 뒤에 함수 이름을 넣는 방식의 함수 선언문(function declaration statement)
상수나 변수에 대입하는 방식의 함수 표현식(function expression)
그리고 ES6에서 도입된 화살표 함수로 함수를 정의할 수 있다.
function a() {} //함수 선언문 const b = function() {}; //함수 표현식 const c = () => {}; //화살표 함수
+) 함수 표현식의 함수 리터럴은 함수 이름을 생략(익명 함수)하는 것이 일반적이다.
++) 함수 선언문은 "표현식이 아닌 문"이고 함수 표현식은 "표현식인 문"이다.
+++) 화살표 함수는 항상 익명 함수로 정의한다.
함수의 중괄호{}안에 실행문을 넣고
함수 a를 선언한 후 함수 식별자a 뒤에 소괄호()인 함수 호출 연산자를 붙이면 함수가 실행된다.
function a() { console.log('Hello'); console.log('Function'); } a(); Hello Function
+) 자바스크립트 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성하고, 거기에 함수 객체를 할당한다. 함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출한다.
function multiply(x, y) { return x * y; // 반환문 } // 함수 호출은 반환값으로 평가된다. var result = multyply(3, 5); console.log(result); // 15