함수
- 함수 선언식 :
function 함수명(매개변수) {//내용}
형태이다.
- 함수 표현식 :
var 변수명 = function() {//내용}
형태이다.
- 함수는 매개변수와 인자의 개수가 서로 달라도 에러가 발생하지 않는다.
표현식과 호이스팅
- 함수 선언식 구문 이전에 함수를 호출하면 해당 함수는 실행 가능하다.
- 함수 표현식 구문 이전에 함수를 호출하면 해당 함수는 실행 불가능하다.
- 자바스크립트는 변수나 함수의 선언식을 메모리에 먼저 저장한 뒤에 코드를 실행하기 때문이다.
catName1("Chloe");
catName2("Chloe");
function catName1(name) {
console.log("My cat's name is " + name);
}
var catName2 = function(name) {
console.log("My cat's name is " + name);
}
- 위의 코드처럼 사전에 주석형태로 메모리에 저장해 놓는다. 선언식은 함수임을 알 수 있지만, 표현식은 함수임을 모르는 상태로 호출식이 실행되기 때문에 이런 일이 발생한다.
- 함수 및 변수 선언식은 메모리에 저장될 뿐 코드가 이동하는 등의 일이 발생하지는 않는다.
반환값과 undefined
- 자바스크립트 함수는 기본값이 'undefined'이며 return으로 그 값은 변경하는 것이다.
- 따라서 void 타입이 존재하지 않는다.
arguments 객체
- 함수가 실행되면 그 안에는 arguments라는 특별한 지역변수가 자동으로 생성된다.
- arguments의 타입은 객체이며, 배열이 아니므로 배열 메서드는 사용할 수 없다.
function a() {
}
a(1,2,3);
arrow function
var 변수명 = (매개변수) => { //내용 };
형태로 함수를 선언할 수 있다.
- return과 {이 붙어있다면 return과 중괄호를 생략할 수 있다.
var 변수명 = (매개변수) => //내용;