JavaScript에서 배열 및 복제 인수를 입력 매개 변수로 사용하여 복제 된 배열을 반환하는 배열 복제 함수를 작성하려고합니다. 이러한처럼자체 실행 내부 함수를 사용하는 JavaScript의 배열 복제 기능
:
expect(replicate([2,3,4],2).toEqual([2,3,4,2,3,4]));
그리고이 완료되면 외부 함수에 원하는 값을 반환해야 반복적으로 불리는자가 실행 내부 기능으로 이러한 목표를 달성하기 위해 노력하고있어.
내부 기능이 제대로 작동하는 것 같다 :
var replicate = function (inputArray, n) {
var outputArray = [];
return (function replicateInner(n) {
if (n > 0) {
outputArray.push(inputArray.slice(0));
replicateInner(--n)
} else {
alert('inner function returns: ' + outputArray);
//inner function returns: [2,3,4,2,3,4]
return outputArray;
}
})(n);
};
을하지만 외부 함수를 호출 할 때, 내가 여기에 누락 될 수 있습니다 어떤
alert(replicate([2,3,4],2)); // returns undefined, not [2,3,4,2,3,4]
어떤 생각 undefined를 반환? 감사합니다. 당신이 밀어 당신은 또한이
return replicateInner(--n);
처럼 replicateInner(--n)
에서 결과를 반환하지 않기 때문에
그랬습니다! 감사! 여기에 일하는 바이올린이 있습니다 : http://jsfiddle.net/databass/hX8Qk/ –
@DavidByman 도움이 된 것을 기쁘게 생각합니다! 유용하다고 생각되면 [내 대답 수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)을 자유롭게 느껴보십시오. :-) – thefourtheye
하지만 push 나 concat를 사용하든 동일한 결과를 얻습니다. –