함수지향(2)

Joy·2022년 9월 29일
0

JavaScript

목록 보기
8/15

매개변수의 수

- arguments

함수 안에서 함수의 인자와 관련된 정보를 갖고 있는 객체이다.
사용방법이 배열과 비슷하여 유사배열이라고도 한다.
자바스크립트 함수는 arguments라는 변수를 사용할 수 있으며
배열을 담는 것으로 약속되어 있다.

function sum(){
  var _sum = 0;
  for(var i=0; i < arguments.length; i++){
    console.log(i + ':' + arguments[i]); // 0:1, 1:2, 2:3, 3:4
    _sum += arguments[i];
  }
  return _sum;
}
console.log('result:' + sum(1,2,3,4));

1.sum이라는 매개변수를 정의하지 않은 함수를 만듦.
2.i=0, i<arguments.length, i++ 이 반복문을 실행한다.
3.arguments에는 사용자가 전달한 인자가 들어가 있고 배열처럼 .length를 통해 sum()인자의 갯수를 알아옴.
4.arguments[i]는 sum인자의 index값을 알아옴.
5.return _sum 값을 알 수 있음.

=>
arguments.length를 통해 이 객체를 포함한 함수가 가지고 있는 인자의 갯수를 파악할 수 있다.
arguments[i]를 통해 이 객체를 포함한 함수에 들어온 인자의 자리수마다의 값을 파악할 수 있다.

arguments.length -> 함수가 가지고 있는 인자가 몇개인지
function(함수이름).length -> 함수가 정의하고 있는 매개변수가 몇개인지

함수의 호출

기본적으로 함수를 호출하는 방법이다.

function f(){}
f();

자바스크립트 함수는 객체이며 객체에는 속성이 있고 속성에는 값과 함수가 올 수 있다.
속성이 값인것을 property라고 하고 함수는 method라고 한다.
함수f는 객체 function이 가지고 있는 내장함수(내장 method)를 상속받는다.

- apply / call

함수를 호출 할 때 call과 apply를 사용하면 첫번째 인자 자리에 this로 사용할 인자값을 넘겨줄 수 있다.

const mike = {
	name: 'mike',
};
function update(birth, occupation){
	this.birth = birth;
    this.occupation = occupation;
}
update.apply(mike, ['May', 'singer']);   //mike = this로 사용할 인자값, 두번째 부터는 update함수가 사용할 인자들을 적은 것
console.log(mike);
// 'name' : 'mike', 'birth' : 'May', 'occupation' : 'singer'

update.call(mike, 'May', 'singer');
console.log(mike);

위 코드에서 this로 사용할 mike라는 객체를 인자로 넘기면
이 해당함수는 update함수가 mike 객체의 메서드인 것 처럼 사용할 수 있다.
apply는 매개변수로 인자 리스트 즉 배열을 전달한다..
'this'에 대한 공부

profile
🐣

0개의 댓글