2011-03-08 4 views

답변

1

왜냐하면 concat이 호출하는 객체를 수정하지 않기 때문입니다. 또한 r=r.concat(abc);은 전달을 이해할 수 없음을 나타냅니다. r을 무언가에 할당 할 때, 값으로 전달 된 원본이 무엇을 가리키고 있는지를 변경하지 않고, 함수에서 변수가 가리키는 것을 업데이트하는 것뿐입니다. 이것은 작동합니다 :

var results=[]; 
function test(r){ 
    var abc = ['a','b','c']; 
    return r.concat(abc); 
} 
results = test(results); 
alert(results); 
+0

배열을 연결 한 후에 무엇을하고 싶습니까? 즉, 값을 반환하지 않고 원본을 업데이트하려면 어떻게해야합니까? 그리고 설명에 감사 드리며 지금은 이해가됩니다. 나는 어느 정도 언급에 의해 지나가는 것을 이해하지만, 분명히 그렇게해야한다. – qw3n

+0

정말로 원한다면,'r.push.push.apply (r, abc)'는'r'에 의해 참조 된 객체를 in-place로 변경할 것입니다. 그러나 그것은 다소 추한 것입니다. – ephemient

+0

@ qw3n gald 나는 도울 수 있었다. 이렇게하려면 전달 된 변수를 수정하는 함수를 사용해야합니다. 체크 아웃'push()'와'splice()'. – Melv

관련 문제