내가 가진 함수자바 스크립트 - 함수가 선언 한 것보다 더 많은 인수를 전달하는 것이 좋지 않습니까?
function callback(obj){...}
그것은 함수 서명에 선언 된 것보다 더 많은 개체를 전달할 괜찮습니까?
callback(theObject, extraParam);
나는 파이어 폭스에 그것을 밖으로 시도하고 문제가있는 것 같지 않았어요,하지만이 작업을 수행 할 나쁜 : 예,이 같이 호출?
내가 가진 함수자바 스크립트 - 함수가 선언 한 것보다 더 많은 인수를 전달하는 것이 좋지 않습니까?
function callback(obj){...}
그것은 함수 서명에 선언 된 것보다 더 많은 개체를 전달할 괜찮습니까?
callback(theObject, extraParam);
나는 파이어 폭스에 그것을 밖으로 시도하고 문제가있는 것 같지 않았어요,하지만이 작업을 수행 할 나쁜 : 예,이 같이 호출?
JavaScript에서는 이것을 허용하므로 임의의 수의 인수를 함수에 전달할 수 있습니다.
함수가 호출 될 때 사용 된 인수 값을 포함하는 숫자 속성이있는 배열과 유사한 개체 인 arguments
개체에서 액세스 할 수 있습니다. length
속성은 얼마나 많은 인수가 사용되었는지 알려줍니다
function sum(/*arg1, arg2, ... , argN */) { // no arguments defined
var i, result = 0;
for (i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
sum(1, 2, 3, 4); // 10
arguments
객체 배열 보일 수도 있지만, Object.prototype
에서 상속 일반 객체이다 : 당신이 쓸 수있는 예를 들어, 함수 자체에 대한 참조입니다 또한 호출 및 callee
재산, , 그러나 Array 메소드를 사용하려면에서 직접 Array 메소드를 호출 할 수 있습니다. 의 length
속성을 사용하여, 함수 가을 기대하고 얼마나 많은 인수 또한
function test() {
var args = Array.prototype.slice.call(arguments);
return args.join(" ");
}
test("hello", "world"); // "hello world"
, 당신은 알 수 :예를 들어, 일반적인 패턴은 실제 배열이 배열 slice
방법을 사용하는 것입니다 얻을 수 함수 객체 :
function test (one, two, three) {
// ...
}
test.length; // 3
예 그것을 할 - 그것의 좋은 연습을하고
당신이 호출 할 수있는 강력한 자바 스크립트 기능을이다'test.lengt h '함수를 사용하여 사용자가 입력 한 인수의 수를 테스트합니다. –
이거나'[] .slice.call (arguments);를 사용할 수 있습니다. – Mahi