ABOUT ME

Contact.
Email:yj.anthonyjo@gmail.com
Introduce : CS Student.

Today
-
Yesterday
-
Total
-
  • [Javascript] 함수 - 매개변수(parameters)와 인자(arguments)의 관계 & arguments.
    카테고리 없음 2023. 2. 25. 15:20
    반응형

    신기하게 생긴 코드를 보았다.

    출처: https://ko.javascript.info/promise-basics

     

    음.. new Promise할 때는 resolve, reject 이렇게 두가지의 콜백 함수가 들어가야하는 것 아닌가?(아래와 같이 말이다)

     

    javascript에 대한 지식이 부족했던지라, 바로 캐치하지 못했다. 이게 자바처럼 메소드 오버로딩의 일종이라고 생각했다.

    하지만 프로미스는 하나의 생성자에 대한 정의만 가지고 있었다.

    음 이게 무엇이지? ChatGPT에 물어본다. 자바스크립트의 기본 함수 호출 방식이라고 한다.

    아 그렇구나! 근데 그게 뭐지?

    mdn에서는 잘 못찾겠다. 없는게 아니라 내가 못찾은 것이겠지..

    그나마 tcpschool에서 해당 내용을 찾았다.

    http://tcpschool.com/javascript/js_function_parameterArgument

    함수를 호출할 때 함수의 정의보다 적은 수의 인수가 전달되더라도, 다른 언어와는 달리 오류를 발생시키지 않습니다.
    이 같은 경우 자바스크립트는 전달되지 않은 나머지 매개변수에 자동으로 undefined 값을 설정합니다.

    그렇다고 한다.

    없으면 undefined를 자동으로 설정해준다고 한다.

    또 공부하면서 새로운 객체를 알게되었다. 바로 arguments이다.

    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/arguments

    매개변수(parameters)와 관계없이, 인자(arguments)들을 모두 받아서 배열과 같이(array-like, 배열은 아니다. length밖에 없다) 저장해두는 객체라고 한다.

    위 예시와 같이 사용할 수 있다.

    이 객체의 신기한 속성이 하나 있다.

    arguments.callee이다.현재 실행중인 함수를 가르킨다.

    따라서 아래와 같은 코드도 가능하다.

     

    함수를 다른 변수에 할당해 사용할 수 있다.

    ps. strict mode에서는 에러난다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode

    strict mode는 다음에 알아보자.

     

    ps. caller라는 프로퍼티도 있지만 deprecated 되었다고 한다.

    반응형

    댓글

Designed by Tistory.