아래의 함수 multiply
에는 콜백 함수 "addOne"이 전달됩니다. 함수 곱하기 [3,5,7]을 반환합니다.JavaScript "arguments"- 다른 매개 변수를 사용하는 함수 전달
콜백 함수 addOne은 multiply 함수의 인수 중 하나이므로 multiply 함수의 인수가 모두 2로 곱해 졌기 때문에 콜백 함수 자체 (즉 addOne)에 2가 곱 해지는 이유는 무엇입니까? 즉, 함수가 숫자가 아니기 때문에 [3,5,7]
을 반환하는 대신에 [3,5,7, NAN]
을 반환 할 것으로 예상 했습니까?
JavaScript 인터프리터는 어떻게 든 2를 곱하지 않는 것을 알고 있습니까?
function addOne(a) {
return a + 1;
}
function multiply(a,b,c, callback) {
var i, ar = [];
for (i = 0; i < 3; i++) {
ar[i] = callback(arguments[i] * 2);
}
return ar;
}
myarr = multiply(1,2,3, addOne);
myarr;
네, 감사합니다. – mjmitche
나는 "호출"이 무엇을하는지 일반적으로 알고 있지만, 작성한 예제 코드에서 정확히 어떻게 작동하는지 설명 할 수는있다. 고맙습니다. – mjmitche
@mjmitche'arguments' 변수는 속성과 같은 배열을 노출하지만 배열이 아닌 객체입니다. 'shift()'를 호출하기 위해서는 실제 배열로 그것을 필요로합니다. 이를 위해서, 우리는 arguments 배열에'array'의'slice()'를 호출하고,'call()'을 사용하여 객체를'this'로 전달할 수 있습니다. 인수없이'slice() '를 사용하면 객체의 복사본을 배열 (또는 표준 배열에서 사용되는 경우 배열의 복사본)으로 반환합니다. – alex