함수
작성일 : 2024.10.06
- 함수 : 일련의 과정을 statement로 구현하고 코드 블럭으로 감싸서 하나의 실행 단위로 정의한 것
- 함수를 사용하는 이유
- 코드의 재사용 -> 유지보수의 편의성 향상, 실수를 줄여 코드의 신뢰성 향상, 코드의 가독성 향상
- 이상적인 함수는 한가지 일만 해야 하며 가급적 작게 만들어야 한다.
- js의 함수는 객체 타입의 값이다.
함수 정의
함수 선언문
- 함수 선언문은 함수 이름을 생략할 수 없다.
- 함수 선언문은 표현식이 아닌 statement
- js 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성하고, 함수 객체를 할당한다.
function add(x,y) {
return x+y;
}
js의 는 중의적 표현이다
- 이 단독으로 존재하면 js엔진은 을 블록문으로 해석된다
- 이 값으로 평가되어야 할 문맥에서 피연산자로 사용되면 js엔진은 을 객체 리터럴로 해석한다.
함수 표현식
- 일급 객체 : 값처럼 변수에 할당할 수도 있고 프로퍼티의 값이 될 수도 있으며 배열의 요소가 될 수 있는 객체.
- js의 함수는 일급 객체다
- 함수 선언문은 "표현식이 아닌 문", 함수 표현식은 "표현식인 문"
- 함수 이름은 함수 몸체 내부에서만 유효한 식별자다.
var add = function foo(x,y) {
return x+y;
}
console.log(add(2,5));
함수 생성 시점과 함수 호이스팅
-
함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다
-
함수 표현식으로 정의한 함수는 함수 표현식 이전에 호출할 수 없다 -> 함수의 생성 시점이 다르기 때문
-
함수 호이스팅 : 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
Function 생성자 함수
- 생성자 함수 : 객체를 생성하는 함수
var add = new Function('x','y', 'return x+y');
console.log(add(2,5));
var add1 = (function(){
var a = 10;
return function(x,y) {
return x+y+a;
}
}());
var add2 = (function() {
var a = 10;
return new Function('x','y','return x+y+a;');
}())
화살표 함수
const add = (x,y) => x+y;