본문 바로가기
Web/Javascript

[Javascript] 전달된 파라미터/arguments

by 나비와꽃기린 2016. 9. 30.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Java에서는 메소드 호출 시, 이렇게 파라미터 갯수가 일치하지 않으면 에러가 난다.



그렇다면, Javascript에서는 어떨까?


 $(document).ready(function(){
	 argumentsTest();
 });
 
 
 function argumentsTest() {
		testFunction("www.naver.com","url",500,700);
	}

function testFunction(url,name,option) {
	console.log("url >>> " + url);
	console.log("name >>> " + name);
	console.log("option >>> " + option);
	console.log("arguments >>> " + arguments);
	console.log("arguments.length >>> " + arguments.length);
	
	console.log("----------------------------------");
	
	console.log("arguments[0] >>> " + arguments[0]);
	console.log("arguments[1] >>> " + arguments[1]);
	console.log("arguments[2] >>> " + arguments[2]);
	console.log("arguments[3] >>> " + arguments[3]);
	console.log("arguments[4] >>> " + arguments[4]);
}


testFunction 함수를 호출할때 파라미터 4개를 전달하고 있다.

하지만 실제 testFunction 함수는 받는 파라미터로 3개만 설정되어 있다.

그렇다면 일반적인 자바와 마친가지로 Error가 날까?


결론은 아니다.


실행 결과는 다음과 같다.


url >>> www.naver.com

name >>> url

option >>> 500

arguments >>> [object Arguments]

arguments.length >>> 4


----------------------------------


arguments[0] >>> www.naver.com

arguments[1] >>> url

arguments[2] >>> 500

arguments[3] >>> 700

arguments[4] >>> undefined



여기서 주의할 점은 option 을 찍어보면 파라미터명으로 정확하게 지정되지 않은 

변수들의 가장 첫 값이 나온다는 점이다.  

 >> url과 name값을 제외한 파라미터중 가장 처음 값인 500이 출력되었다.


또한 배열과 마찬가지로 index는 0부터 시작된다.

따라서 arguments를 사용할때 index를 잘 확인하고 사용해야 될 것이다.