• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Argument 질문 입니다.

20.02.08 19:03 작성 조회수 113

1

var get = function(one) {

    return arguments

};
get("A", "B");를 했을때

위의 arguments라는건 원래 저렇게 사용하는 obj가 있고

사용하는 문법이 저렇게 사용한다는 건가요?

그리고 var get = function(one){

    return arguments;

}

get(77,100);

이러게 입력했을때 결과는 

  1. Arguments(2) [77, 100, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    1. 077
    2. 1100
    3. length2

답변 3

·

답변을 작성해보세요.

0

Function, Object, Argument 모두 독립된 오브젝트이며 child 개념을 갖지 않습니다.

다만, function abc(){}처럼 function 키워드를 만나면 __proto__를 가진 function 인스턴스를 만들게 되는데요, 이때 __proto__에 Object.prototype에 연결된 6개 메소드가 연결됩니다. 그래서 마치 child처럼 보일 수 있지만, child 개념보다 연결, 확장 개념이라고 할 수 있습니다. 

// Object도 Global 객체의 child다. ==> Object, Global 모두 독립된 오브젝트로 child 개념이 성립되지 않습니다.

// 빈 파일 자체가 Golbal scope 라고 이해해도 되겠습니까? ==> 빈 파일이 무엇을 뜻하는지 알 수 없지만, Global 오브젝트와 Global scope는 개념이 다릅니다. 상황에 따라 같은 개념으로 볼 수도 있고 Global 오브젝트가 Global 스코프가 되지만, 뉘앙스가 다릅니다.

0

감사합니다. 한가지만 더 여쭤보자면

// Function() 함수는 Object객체의 child이고 Argument는 Functio() 함수의 child다.

// Object도 Global 객체의 child다. 

// 빈 파일 자체가 Golbal scope 라고 이해해도 되겠습니까?

0

의미적으로 맞습니다만, 부언 설명을 하면

함수가 호출되면 자동으로 Argument 오브젝트(객체)를 만듭니다. 그리고 호출한 함수에서 넘겨준 모든 파라미터 값을 Argument 오브젝트에 {0: 77, 1: 100}처럼 Array-Like 형태로 저장합니다. 함수 안에서 Argument 오브젝트의 값을 arguments로 사용할 수 있습니다. arguments[0]은 77을 반환합니다.  함수를 빠져 나오면 자동으로 Argument 오브젝트를 삭제합니다.