언어 설계 오류로 인해 인수는 배열로 취급 될 수 있습니다.
코드 사본은 다음과 같습니다.
함수 Zero () {
Console.log (인수 [0]);
}
있을 것입니다
코드 사본은 다음과 같습니다.
함수 Zero () {
for (var i = 0; i <arguments.length; i ++) {
Console.log (인수 [i]);
}
}
JavaScript가 Javasc이라는 사실을 활용합니다.
여기서 인수 변수는 실제 인수에 대한 배열과 같은 인터페이스를 제공합니다. 여기서 인수의 변수 매개 변수로 인해, 우리는이 흥미로운 것을 사용하여 과부하와 같은 흥미로운 일을 할 수 있습니다.
Javscript Reload
StackVoerFlow에 과부하에 대한 질문이 있으므로 첫 번째 대답은
코드 사본은 다음과 같습니다.
if (typeof friend === "undefined") {
} 또 다른 {
}
또 다른 대답은
코드 사본은 다음과 같습니다.
스위치 (arguments.length) {
케이스 0 :
// 아마도 오류 일 것입니다
부서지다;
case 1:
// 무언가를합니다
부서지다;
case 2:
기본값 : // 더 많은 매개 변수의 경우를 처리합니다
// 다른 일을합니다
부서지다;
}
그러나이 방법은 실제로 잘 보이지 않습니다. 우리의 기능이 결국 이렇게 될까요?
코드 사본은 다음과 같습니다.
함수 Zero1 () {
Console.log ( '인수 1')
};
함수 Zero2 () {
Console.log ( '인수 2')
};
함수 Zero () {
if (arguments.length == 1) {
Zero1 ();
} 또 다른{
Zero2 ();
}
}
정말 잘 보이지 않습니다. 우리가 스위치를 변경하더라도 ... 케이스가 좋아 보이지 않을 것입니다.
JavaScript 인수는 배열이 아닙니다
인수는 우리가 보는 것처럼 항상 배열이 아니며 때로는 그렇지 않을 수도 있습니다.
코드 사본은 다음과 같습니다.
기능 Hello () {
Console.log (타입 인수);
}
여기서 인수 유형은 객체이지만 배열 유형도 객체이지만 배열로 변환 할 수 있습니다.
코드 사본은 다음과 같습니다.
var args = array.prototype.slice.call (인수);
그러나 이것은 또한 이것이 배열이 아니라는 것을 보여줍니다. 배열의 유일한 속성, 즉 길이 만 있습니다. 이것 외에도
arguments.callee
현재 실행중인 기능에 대한 참조.
논쟁
현재 실행중인 함수를 호출 한 함수에 대한 참조.
인수. 길이
함수에 전달 된 인수 수에 대한 언급.