처음 이 내용을 봤을 때 '위장한' 일반 매개변수인 줄 알았는데, 함수를 정의할 때 명시적으로 선언할 필요는 없었습니다.
그러나 코드는 저렴합니다.) 코드를 보세요:
function funcTest(a, b) {
alert(a)
alert(b)
for ( var i = 0 ; i alert(arguments[i]);
}
}
function test() {
funcTest( 1 , 2 , 3); // 실행을 위해 html 페이지에 넣습니다.
}
function funcTest(a, b) {
alert(a)
alert(b)
for ( var i = 0; ; i alert(arguments[i]);
}
}
function test() {
funcTest( 1 , 2 , 3 ); / 실행을 위해 html 페이지에 넣습니다
}
코드가 실행된 후 어떻게 보이죠? 네, 여기 길이가 정말 이상하죠? 책에서는 “코드가 실행되면 1, 2, 1, 2, 3의 순서로 표시됩니다. 따라서 함수를 정의할 때 매개변수 목록을 지정하지 않더라도 획득한 매개변수는 매개변수를 통해 계속 참조할 수 있어 프로그래밍에 많은 유연성을 제공합니다." 이 문장보다 더 예리한 설명은 없습니다.
이것을 보면 우리 모두 질문이 있을 수 있습니다(js 프로그래밍에 대한 약간의 지식이 있는 경우). 인수 매개변수가 js 배열 객체의 인스턴스입니까? 다음 코드는 이 의심을 해결하는 데 도움이 됩니다.
Array.prototype.testArg = " test Arg " ;
function funcArg() {
alert(arguments.testArg)
}
function test() {
alert( new Array().testArg);
funcArg();
}
Array.prototype.testArg = " 테스트 인수 " ;
alert(arguments.testArg);
}
function test() {
alert( new Array().testArg)
funcArg()
코드 실행 결과는 "테스트 인수"와 "정의되지 않음"이 먼저 나타나는 것입니다. funcArg 호출이 "정의되지 않음"을 반환하는 이유는 무엇입니까? 이 글을 읽고 나면 위의 질문이 사라졌다고 생각합니다.
이 시점에서 모든 논쟁을 마스터했다고 생각하시나요? 재능 있는 js 디자이너를 과소평가하는 것은 너무 과한 일입니다. 또 다른 재능 있는 디자인을 살펴보겠습니다.
Q: 재귀를 사용하여 1에서 n까지의 자연수의 합을 계산합니다
A1:
함수 sum(n) {
if ( 1 == n) return 1 ;
else return n sum(n - 1 )
function test() {
alert(sum( 100 ) ); // 실행을 위해 html 페이지에 넣습니다.
} function sum(n) {
if ( 1 == n) return 1
else return n sum(n - 1 ) ;
}
function test() {
alert(sum( 100 )) ; // 실행을 위해 html 페이지에 넣습니다.
}
A2:
function sum( n) {
if ( 1 == n) return 1 ;
else return n 인수.callee(n - 1 )
}
function test() {
alert(sum( 100 )); // 실행을 위해 html 페이지에 넣습니다.
} function sum(n) {
if ( 1 == n) return 1 ; 1 );
function test() {
alert(sum( 100 )) ; // 실행을 위해 html 페이지에 넣습니다.
}
A1과 A2 모두 해결되었습니다. 문제는 첫 번째 방법이라고 생각합니다. 이 방법은 대부분의 사람들에게 일반적인 방법이지만 JS는 두 번째 방법을 사용하도록 권장합니다. 원본 책에서는 이 메서드 A1에 "함수에 sum 자체에 대한 호출이 포함되어 있습니다. 그러나 JavaScript의 경우 , 함수 이름은 단지 변수 이름일 뿐입니다. 함수 내에서 sum을 호출하는 것은 전역 변수를 호출하는 것과 동일하며, 이는 자신을 호출한 것으로 잘 반영될 수 없습니다. 그것은 스스로를 부르고 있다." 왜?
책을 사용하면 후회할 일이 줄어들 것입니다. 책을 확인하면 다음과 같이 나옵니다. "인수 개체의 또 다른 속성은 함수 개체 자체에 대한 참조를 나타내는 호출자이며, 이름이 지정되지 않은 함수의 재귀를 구현하는 데 도움이 됩니다. 또는 보장된 기능. 나는 이것이 합리적이라는 것을 인정합니다. 나는 항상 책, 특히 기술 서적에 대해 높은 수준의 신뢰를 유지해 왔지만 여기서는 "인수 개체의 또 다른 속성은 피호출자"라고 말합니다. "인수"가 " "객체"가 되나요? 제목에 "함수에 전달된 암시적 매개변수: 인수"라고 되어 있는데, 제가 잘못 복사한 것이 아닐까요? 전자책을 확인해 보세요. 젠장, 복사하고 붙여넣을 때 아직도 실수를 할 수 있나요?
객체, 객체? 개체가 너무 많으니 다음 글에서 "개체"에 대해 찾아보겠습니다.