728x90
반응형

다음의 예제를 먼저 예상해 봅니다.

1
2
3
4
5
function fruit(fr1, fr2){
    console.log(fr1);
    console.log(fr2);
}
fruit("바나나""딸기");
cs





정확히 바나나 와 딸기 를 출력하고 있습니다.

fruit함수를 호출할때, 바나나와 딸기를 인자로 넣어 주고,

fruit라는 함수는 이 바나나와 딸기를 받아줄 매개변수를 가지고 있습니다.




그럼 다음의 예제를 예상해 봅니다.

함수 fruit는 아무런 매개변수를 가지고 있지 않습니다.

1
2
3
4
5
function fruit(){
    console.log(fr1);
    console.log(fr2);
}
fruit("수박""참외");
cs





Uncaught ReferenceError: fr1 is not defined

라는 에러가 출력되고 있습니다.

fr1 은 정의되지 않았다고 합니다.

여기서 자바스크립트는 fr1을 발견하면 우선 지역변수와 매개변수 중에서 fr1을 찾고, 만약 발견하지 못한다면 전역변수에서 찾아 사용합니다. 전역변수 에도 없다면 fr1이란 변수가 없는 걸로 판단하고 에러를 발생합니다.

만약 인자로 넘긴 수박과 참외가 출력이 되게 하려면 어떻게 하면 될까요?






여기서 잠깐.

인자는 함수를 호출하는데 있어서 호출시 전달하는 값을 의미하고,

매개변수는 함수 내에서 전달 된 값을 받아들이는 변수 입니다.

자바스크립트 함수는 arguments라는 객체를 기본으로 제공 합니다.

- arguments객체는 모든 함수에서 사용 가능한 지역 변수 입니다.

- 이객체는 함수에 전달된 각 인수에 대한 항목(entry)을 포함 합니다.

- arguments 객체는 Array가 아닙니다.

- Array와 비슷하지만 length를 빼고 어떤 Array속성도 없습니다.

[출처 : MDN - 바로가기]


이 부분을 읽고 다음 스샷을 보면 이런 결과를 볼 수 있습니다.

분명 매개변수가 없는데로 인자의 갯수를 출력해 주고 있습니다.

함수에 전달된 인수의 갯수가 찍히고 있죠.






따라서 "수박", "참외"가 출력되려면 다음과 같은 방법으로 접근하면 됩니다.

1
2
3
4
5
function fruit(){
    console.log(arguments[0]);
    console.log(arguments[1]);
}
fruit("수박""참외");
cs


반응형

'javascript' 카테고리의 다른 글

메서드 체인(Method Chaining)  (0) 2017.08.31
프로토타입(Prototype)  (0) 2017.08.28
전역변수 차이  (2) 2017.06.15
자바스크립트 undefined 와 null 의 차이  (2) 2017.06.11
setInterval(), clearInterval(), setTimeout()  (0) 2015.05.07