Arguments, 매개변수
함수 안에서 함수의 정보를 담고 있는
객체입니다. 배열과 비슷하지만 배열은 아닙니다.
매개변수와 인자의 차이 function A(arg){
}arg는 매개변수
A(1);
-> 1은 인자
function
sum(){
var i, _sum = 0;
for(var i = 0; i < arguments.length;
i++){ //자바스크립트와 약속된 변수명
document.write(i+' :
'+arguments[i]+'<br />');
_sum += arguments[i];
}
return _sum;
}
document.write('result
: ' + sum(1,2,3,4)); //사용자가 전달한 인자
매개변수와 관련된 두가지 수가 있습니다. arguments.length와 함수.length
arguments.length는 함수로 전달된 실제 인자의 수를 의미하고
함수.length는
함수에 정의된 인자의 수를 의미합니다.
function
zero(){
console.log(
'zero.length', zero.length, //0
'arguments', arguments.length //0
);
}
function
one(arg1){
console.log(
'one.length', one.length,
'arguments', arguments.length
);
}
function
two(arg1, arg2){
console.log(
'two.length', two.length,
'arguments', arguments.length
);
}
zero();
// zero.length 0 arguments 0
one('val1',
'val2'); // one.length 1 arguments 2
//함수의 이름. Length는 매개변수를
정의한 숫자, arguments 몇 개의 인자를 전달했는가
two('val1'); // two.length 2 arguments 1
함수의 호출
function
sum(arg1, arg2){
return arg1+arg2;
}
alert(sum(1,2));
//결과는 3입니다.
alert(sum.apply(null,
[1,2])) //결과는 3입니다.
sum.call
o1 =
{val1:1, val2:2, val3:3}
o2 =
{v1:10, v2:50, v3:100, v4:25}
function
sum(){
var _sum = 0;
for(name in this){ //this는 호출 시 정해집니다.
_sum += this[name];
}
return _sum;
}
alert(sum.apply(o1))
// 6 o1객체를
apply인자로 주게되면 o1이 함수에서 this가
됩니다.
//var this = o1; 이라는 값이 됩니다.
alert(sum.apply(o2))
// 185
출처 : 생활코딩 강의