>  기사  >  웹 프론트엔드  >  js의 함수 매개변수 구현 원리

js의 함수 매개변수 구현 원리

不言
不言원래의
2018-07-16 14:58:431752검색

js에서 함수의 실제 매개변수 구현이 다릅니다. 매개변수를 전달할 때 실제 매개변수가 형식 매개변수와 일치하지 않을 수 있습니다. 그렇다면 올바른 숫자는 어떻게 연결할까요? 여기서는 js의 매개변수 구현 원리를 연구해야 합니다.

JS에서 전달되는 매개변수는 다를 수 있다는 것을 모두 알고 있습니다. 예를 들어 다음과 같은 함수가 있습니다.

<script type="text/javascript">
    function one(a,b,c) {        
    this.x = a;
        console.log(a);
    }
    one(1);</script>

우리가 전달하는 숫자는 1이지만 형식 매개변수는 다음과 같습니다. ABC가 3개 있어요. 이건 분명히 옳지 않은 것 같죠?

이때 b와 c를 체크하면 undefine이 표시됩니다. ps: 예: console.log(b).

물론 이 두 숫자는 없습니다. 어떻게 찾을 수 있나요?

그렇다면 JS는 실제 매개변수와 형식 매개변수가 일치하지 않는 상황을 어떻게 구현할까요? 코드를 살펴보겠습니다.

<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>JavaScript中函数的形参和实参的区别</title></head><body>
    <script type="text/javascript">
    function one(a,b,c) {        
    return one.length;
    }    function two(a,b,c,d,e,f,g){        
    return arguments.length;
    }
    console.log(one()); //3    
    console.log(two()); //0
    </script></body></html>

여기서는 하나의 함수에서 one.length를 반환하고 두 함수에서 arguments.length를 반환합니다. 출력 one()이 형식 매개변수의 수인 one.length를 반환하고 인수.length가 실제 매개변수의 수를 반환한다는 것을 발견했을 수 있습니다.


단숨에 이해하셨나요?

실제 매개변수의 수를 얻기 위해 인수[0]을 사용할 수도 있습니다.

그런데 왜 형식 매개변수가 없는 숫자를 배열과 같은 방식으로 표현할 수 있나요? 글쎄, 나는 당신이 처녀자리이고 모든 면에서 대칭을 요구한다는 것을 알고 있습니다. 형식 매개변수가 배열이 아닌 이상 이 방식으로 사용할 수 있습니다. 그렇지 않으면 함수에서 형식 매개변수의 이름만 사용하여 실제 매개변수를 얻을 수 있습니다.

C# 및 Java에서는 매개변수 유형 및 개수에 대한 요구사항이 JS에 비해 매우 엄격합니다. 전혀 일치하지 않으면 오류가 보고됩니다. . 그리고 JS는 이러한 디자인 덕분에 상대적으로 유연한 언어가 될 수 있습니다.

위의 방법은 JS가 동일한 수의 형식 매개변수와 실제 매개변수를 강제하지 않고 의존하는 구현입니다. 동일한 유형의 경우 JS의 모든 유형을 var a =...로 작성할 수 있습니다. 유형의 용도는 무엇입니까? 이것이 바로 JS가 약한 유형의 언어라고 불리는 이유입니다!

관련 권장사항:

실제 매개변수, 형식 매개변수 및 js 함수의 클로저에 대한 이해# 🎜🎜 #

JS 함수 선언 및 함수 표현 분석# 🎜🎜#

위 내용은 js의 함수 매개변수 구현 원리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.