코드 사본은 다음과 같습니다.
<script language = "javaScript">
// 첫 번째 매개 변수 값입니다.
기능 테스트 (a, b, c, d) {
경고 (인수 [0]);
}
// 인수 [0]는 실제로 a입니다. 마찬가지로, 인수 [1]는 B, C, D입니다
</스크립트>
코드 사본은 다음과 같습니다.
<script language = "javaScript">
{
함수 함수 _name (exp1, exp2, exp3, exp4)
{
var umber = "";
Umber = arguments.length;
경고 (Umber);
}
function_name ( 'a', 'b', 'c', 'd'); 모두 호출 할 수 있습니다
// function_name ( "a", "b", "c", "d"); 호출 할 수 있습니다
}
</스크립트>
1. JavaScript에서 인수 객체는 비교적 특별한 객체이며 실제로 현재 함수의 내장 속성입니다. 인수는 배열과 매우 유사하지만 실제로 배열 인스턴스는 아닙니다. 다음 코드로 확인할 수 있습니다 (물론 Funcarg 함수에서는 Funcarg.arguments로 인수를 작성하는 것이 불필요합니다).
코드 사본은 다음과 같습니다.
Array.prototype.testarg = "테스트";
기능 funcarg () {
경고 (funcarg.arguments.testarg);
경고 (funcarg.arguments [0]);
}
알림 (new array (). testarg); // 결과 : "테스트"
Funcarg (10); // 결과 : "정의되지 않은" "10"
2. 인수 객체의 길이는 공식 매개 변수의 수가 아닌 실제 매개 변수의 수에 의해 결정됩니다. 공식 매개 변수는 함수 내에서 메모리 공간 저장소를 다시 열는 변수이지만 인수 객체의 메모리 공간과 겹치지 않습니다. 인수와 값이 모두 존재하면 값은 동기화되지만 그 중 하나의 경우 값은이 귀중한 상황에 대해 동기화되지 않습니다. 다음 코드를 확인할 수 있습니다.
코드 사본은 다음과 같습니다.
함수 f (a, b, c) {
경고 (arguments.length); // 결과 : "2"
a = 100;
경고 (인수 [0]); // 결과 : "100"
인수 [0] = "Qqyumidi";
경고 (a); // 결과 : "Qqyumidi"
경고 (c); // 결과 : "정의되지 않은"
C = 2012;
경고 (인수 [2]); // 결과 : "정의되지 않은"
}
f (1, 2);
3. JavaScript의 함수의 선언 및 호출 특성에서 JavaScript의 함수는 과부하 할 수 없음을 알 수 있습니다.
다른 언어로 된 오버로드에 기초하여 : "함수의 반환 값은 다르거나 공식 매개 변수의 수가 다릅니다."위의 결론을 도출 할 수 있습니다.
첫째 : JavaScript 함수의 선언이 값 유형을 반환한다는 진술은 없습니다.
둘째 : JavaScript의 공식 매개 변수 수는 기능에서 가변 작동을 용이하게하기위한 것입니다. 실제로 실제 매개 변수는 인수 객체에 저장되었습니다.
또한 JavaScript 함수 자체에서 기능을 JavaScript로 과부하 할 수없는 이유에 대한 깊은 이해 : JavaScript에서는 기능이 실제로 객체이며 함수 이름은 함수에 대한 참조이거나 함수 이름 자체가 변수입니다. 아래에 표시된 함수 선언 및 함수 표현식의 경우, 위의 내용은 실제로 동일합니다 (함수 선언과 함수 표현식의 차이를 고려하지 않고 함수는 함수가 JavaScript에서 과부하 될 수 없다는 특성을 이해하는 것이 매우 유용합니다.
코드 사본은 다음과 같습니다.
기능 f (a) {
A + 10을 반환합니다.
}
기능 f (a) {
반환 a -10;
}
// 함수 선언과 함수 표현식의 차이를 고려하지 않고 다음과 같습니다.
var f = 함수 (a) {
A + 10을 반환합니다.
}
var f = 함수 (a) {
반환 a -10;
}
4. 인수 대상에는 매우 유용한 속성이 있습니다 : Callee. arguments.callee이 인수 객체가있는 현재 함수 참조를 반환합니다. 재귀 적 호출을 사용하기 위해 기능 이름 자체 대신 arguments.callee를 사용하십시오.
다음과 같이 :
코드 사본은 다음과 같습니다.
함수 수 (a) {
if (a == 1) {
반환 1;
}
a + arguments.callee (-a)를 반환합니다.
}
var mm = count (10);
경고 (mm);