함수 형태
함수 선언문
Function Declaration
function getBook(book){코드}
함수 표현식
Function Expression
var getBook = function(book){코드}
JS엔진이 function을 만나면 function object를 만들고 getBook에 할당함. getBook은 함수이름이면서 function object.
함수 선언문
구분 | 데이터(값) |
function | function 키워드 |
식별자 | 함수 이름 |
파라미터 | 파라미터 리스트opt |
함수 블록 | {실행가능한 코드opt} |
반환 | 생성한 function 오브젝트 |
function getBook(title){함수코드} 형태
function 키워드, 함수 이름, 블록 {} 작성필수
파라미터, 함수 코드는 선택
함수 이름을 생성한 function 오브젝트의 이름으로 사용
함수 표현식
var getBook = function(title){코드}
function 오브젝트를 새성하여 변수에 할당.
변수 이름이 function 오브젝트 이름이 됨.
식별자 위치의 함수 이름은 새략 가능
var name = function abc(){}에서 abc가 식별자 위치의 함수 이름.
var getBook = function inside(value){
if (value === 102){
return value;
};
log(value);
return inside(value +1);
};
getBook(100); // 100을 할당하면 if문에서 false가 나옴. log(100)이 되고 inside(value+1)로 자기 함수안에서 자신을 호출함. 함수가 돌아가다 102가 할당되면 함수에서 빠져나오게 되고 끝남.
함수호출
call()
구분 | 데이터(값) |
object | 호출할 함수 이름 |
파라미터 | this로 참조할 오브젝트 |
호출된 함수로 넘겨줄 파라미터opt | |
반환 | 호출된 함수에서 반환한 값 |
getTotal.call(this, 10, 20);
function getTotal(one, two){
return one + two;
};
var result = getTotal.call(this, 10, 20);
log(result); //call method은 주로 첫번째 파라미터에 this를 사용.
첫번째 파라미터
호출된 함수에서 this로 참조할 오브젝트
일반적으로 this 사용. 다른오브젝트 작성 가능
apply()
call와 같음 단지 두번째 파라미터를 배열로 사용하는게 다름.
getTotal.apply(this, [10, 20]);
파라미터 수가 유동적일 때 사용. 두번째 파라미터에 배열 사용
toString()
구분 | 데이터(값) |
object | function |
파라미터 | 사용하지 않음 |
반환 | 변환한 값 |
거의 모든 빌트인 오브젝트에 toString()이 있지만 오브젝트마다 반환되는 형태가 다름
function오브젝트의 toString()은 함수 코드를 문자열로 반환.
var getBook = function(){
return 100 + 23;
};
var result = getBook.toString();
log(result); //function(){return 100+23;}
Argument 오브젝트
함수가 호출되어 함수 안으로 이동했을 때 arguments 이름으로 생성되는 오브젝트
함수를 호출한 곳에서 넘겨준 값을 순서대로 저장
호출된 함수에 파라미터를 작성한 경우 호출된 함수의 파라미터에도 값을 설정하고 아규먼트 오브젝트에도 저장.
파라미터라고 부른것은 아규먼트 오브젝트와 구분하기 위한것.
function getTotal(one) {
return one+ arguments[1] + arguments[2];
};
var result = getTotal(10, 20, 30);
log(result); //10이 one에 할당되고 arguments[0]에도 할당. [1]에는 20, [2]에는 30할당.
function getTotal(one) {
return one+ arguments[1] + arguments[2];
};
var result = getTotal.apply(this, [10, 20, 30]);
log(result); //함수가 끝나면 arguments오브젝트 삭제함.
'javascript' 카테고리의 다른 글
Global과 Window관계 (0) | 2021.10.28 |
---|---|
Global 오브젝트 (0) | 2021.10.21 |
함수 생명주기, 함수 분류, length프로퍼티 (0) | 2021.10.14 |
Function 오브젝트 (0) | 2021.10.14 |
Object와 prototype, 빌트인 object 특징 (0) | 2021.10.08 |