반응형

매개변수 개수에 따른 함수호출법


전달인자의 개수에 따라 서로 다른 처리를 해줘야하는 함수


호출된 인자 개수에 상관없이 이들 각각의 값을 모두 더해 리턴하는 함수의 예제이다.

이전 포스팅에서 확인 해보았듯이, 전달인자의 수와 호출함수의 매개변수의 수가 달라도 호출이 가능한 것을 이용한 예제이다.


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

console.log(sum(1,2,3)) // 출력값 6

위의 예시에 대한 해설은 다음과 같다.


1. arguments(전달인자)의 length는 2이다.

2. for문을 통해 0번인덱스, 1번인덱스 총 두번의 루프가 돈다.

3. for문이 끝나면 result를 반환한다.


예시를 보면 함수의 개수를 arguments 객체로 받아서 for문으로 값이 끝날때까지 더한 후 result를 반환한다.


arguments객체는 유사배열 객체 로써, 전달받은 인자로 배열과 비슷한 형태를 가진다.


1. 함수로 호출할 때 넘겨진 인자(배열형태) : 함수를 호출할 때 첫번째 인자는 0번 인덱스, 두번째 인자는 1번 인덱스 등등

2. length 프로퍼티 : 실제 배열의 length가 아닌 유사배열 객체로서의 length. 함수를 호출할때 넘겨지는 인자의 개수를 의미

3. callee 프로퍼티 : 현재 실행 중인 함수의 참조값 (위의 객체에서는 sum() 함수가 callee 프로퍼티가 된다.)

* 전달인자의 개수에 상관없이 유사배열객체의 length 프로퍼티로 바인딩을 할 수 있다.


반응형
반응형

Javascript 핵심개념


객체

- 자바스크립트의 모든것은 '거의' 객체이다. 필자도 공부 하면서 알게된 거지만, 모든 데이터타입이 '객체' 인것은 아니다.

var intNum = 10;

예를들어 위와같은 소스코드에서 필자는 intNum 이라는 변수를 '객체' 라고 정의하고, 사용하고 있었다.

하지만 자바스크립트에서 이를 '객체' 라고 표현하지 않고, 기본 데이터 타입(기본타입) 으로 지정이 된다.


자바스크립트에서 '객체'라 함은 단순히 '이름(key):값(value)' 형태의 프로퍼티들을 저장하는 컨테이너다.


따라서 기본 데이터 타입인 boolean, number, string 그리고 특별한 값인 null과 undefined 는 '객체'가 아니다.

하지만 자바스크립트에서 세 가지 기본 타입도 모두 객체처럼 다룰 수 있기 때문에, 자바스크립트는

null과 undefined를 제외한 모든 것을 객체로 다룰 수 있다.



함수

- 함수 또한 자바스크립트 에서는 '객체' 로 구분된다. 일반적인 객체보다 조금 더 많은 기능이 있는 객체 라고 할수 있다.

함수 선언문, 함수 표현식, function()생성자 함수 등으로 나뉘며, 따로 정리해서 포스팅하겠다.



프로토타입

- 모든 객체는 숨겨진 링크인 프로토타입 을 가진다. 프로토타입이란, ECMAScript에서 정의한 표현으로,
해당 객체를 생성한 생성자의 프로토타입 객체를 가르킨다.



실행 컨텍스트와 클로저

- 자바스크립트는 독특한 과정으로 실행 컨텍스트를 만들고, 그 안에서 실행이 이루어진다. 이 실행 컨텍스트는
자신만의 유효범위(Scope)를 갖는데, 이 과정에서 클로저를 구현할 수 있다.


※ 프로토타입, 실행컨텍스트, 클로저, 유효범위(Scope) 등 생소한 단어들이 많이 나온다.

해당 용어에 대한 설명과 사용법 등은 따로 포스팅을 하고, 기본적인 개념과 객체에 대하여 어떤것들이 있는지만 파악하였다.





반응형

+ Recent posts