이 기사의 내용은 js의 인수가 무엇인지에 관한 것입니다. js에서 인수의 사용법은 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
배열 유사 객체: 인수
우리 모두 알고 있듯이 js는 매우 유연한 언어입니다. js에서 함수를 호출할 때 우리는 종종 일부 매개변수를 함수에 전달합니다. js는 이 함수에 전달된 모든 매개변수를 인수라는 이름으로 저장합니다. 그렇다면 이것은 대체 무엇일까요?
js의 모든 것은 객체입니다. 심지어 배열과 문자열 함수도 객체입니다. 따라서 인수라는 것도 객체이고, 속성 이름은 전달된 매개 변수의 순서에 따라 결정됩니다. 첫 번째 매개 변수의 속성 이름은 '0'이고 두 번째 매개 변수의 속성 이름은 '0'입니다. 매개변수는 '1' 등이며, 현재 전달된 함수 매개변수의 수를 저장하는 길이 속성도 가지고 있습니다. 우리는 이런 종류의 객체를 배열형 객체라고 부르는 경우가 많습니다. 배열형 객체와 배열은 모두 객체에서 태어나지만 배열은 형이며 배열형 객체보다 더 많은 장난감(메서드)을 가지고 있습니다. 배열형 객체는 배열과 많이 닮은 동생일 뿐입니다.
잠깐만요, 방금 배열도 객체라고 하지 않았나요? 방법이 없습니다. js는 매우 유연합니다. 이 배열형 객체는 함수에 전달된 매개변수를 저장할 뿐만 아니라 나중에 하나씩 설명할 다른 속성도 가지고 있습니다.
배열 유사 객체와 배열은 공통점이 많기 때문에 호출 메소드를 사용하여 배열 유사 객체가 배열의 일부 메소드도 사용하도록 할 수 있습니다. 남동생이 형의 장난감을 가지고 놀다... 너무 멀리 가지 말자 이 글은 인수에 대해서만 이야기한다.
여기 밤이 있습니다:
function add() { if( arguments.length == 2 ){ return arguments[0] + arguments[1]; }else{ return '传入参数不合法'; } } console.log( add(2,3) ); console.log( add(1,2,3) );
결과를 보세요:
결국 우리는 인수에도 callee이라는 속성이 있다는 것을 확인했습니다. 이 속성은 현재 함수에 대한 참조를 나타냅니다. 간단히 말해서 이 속성에 저장된 호출 함수의 코드는 다음과 같습니다. 정말 사용할 수 없습니다. 이해했다면 이제 console.log가 그 재능을 보여줄 차례입니다.
마지막으로, 인수에도 callee라는 속성이 있음을 알 수 있습니다. 간단히 말해서 이 속성은 코드가 호출될 때 함수를 저장합니다. 정말 이해하기 어렵습니다. 이제 console.log가 그 재능을 보여줄 때입니다.
function showcallee() { var a = '这里是代码'; var b = '这是另一段代码'; var c = a + b; console.log(arguments.callee); return c; } showcallee();
결과를 보면 저만큼 충격을 받았나요? Arguments.callee가 완성한 코드 아닌가요? 이 함수는 완전히 반환됩니다.
아래에서는 매개변수 추가 함수를 구현하기 위해 인수 객체를 사용합니다. 전달된 매개변수 수에 관계없이 전달된 매개변수가 추가되어 반환됩니다.
function add() { var len = arguments.length, sum = 0; for(;len--;){ sum += arguments[len]; } return sum; } console.log( add(1,2,3) ); //6 console.log( add(1,3) ); //4 console.log( add(1,2,3,5,6,2,7) ); //26js는 약한 유형의 언어이고 오버로딩 메커니즘이 없기 때문에 함수를 다시 작성할 때 원래 함수를 직접 덮어쓰게 됩니다. 여기서 인수를 사용하여 수신되는 다른 작업을 수행할 수 있습니다. 실제 매개변수 유형과 수량을 입력하고 다른 값을 반환합니다.
2. 인수.callee를 사용하여 재귀 구현
먼저 이전에 재귀를 어떻게 구현했는지 살펴보겠습니다. 함수function factorial(num) { if(num<=1) { return 1; }else { return num * factorial(num-1); } }그러나 이 함수가 익명 함수가 되면
호출 수신자를 사용하여 이 함수를 재귀할 수 있습니다.
function factorial(num) { if(num<=1) { return 1; }else { return num * arguments.callee(num-1); } }이 방법은 사용하기 쉽지만 js의 유연성을 제한하고 js를 엄격하게 만들기 위해 ECMAScript 4에 새로운 엄격 모드가 추가되었습니다. , 전역 변수를 직접 선언하기 위해 var를 사용하는 것은 금지되어 있습니다. 물론 요점은args.callee 속성도 금지된다는 것입니다. 하지만 이것은 문제가 되지 않습니다. ES6에는 유용한 변수 선언 방법과 새로운 구문 설탕이 추가되었습니다. 이제 ES6의 새로운 구문을 빠르게 배워보겠습니다. 관련 추천:
JS 모듈화 구현 방법은 무엇인가요? js 모듈화 설명
js 객체란 무엇인가요? js 객체 유형은 무엇입니까? js 객체 유형 요약
위 내용은 js의 인수란 무엇입니까? js에서 인수를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!