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의 함수 매개변수 구현 원리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!