른록노트
[Javascript] 실수하기 쉬운 유형 - 변수 = 변수 해버리면 위치값이 변함 본문
만약
var static=[];
function(){
var temp=[];
temp = static
temp.push(haha);
}
이렇게 해버리면 temp는 전역변수로 바뀌어서 temp가 초기화가 안됨
만약
var static=[];
function(){
var temp;
temp=[];
temp.psuh(static);
temp.push(haha);
}
참조형 변수를 한번에 초기화시키지 말아주세요. 예제를 살펴봅시다.
var arr1 = [1, 2, 3]
, arr2 = ['a', 'b', 'c'];
//reset both arrays
arr1 = arr2 = [];
//add a single item in arr2 and arr1
arr2.push( 32 );
arr1.push( 10 );
//print both arrays and you will see same result
//OUTPUT: 10, 32
alert( arr1.join() );
alert( arr2.join() );
, arr2 = ['a', 'b', 'c'];
//reset both arrays
arr1 = arr2 = [];
//add a single item in arr2 and arr1
arr2.push( 32 );
arr1.push( 10 );
//print both arrays and you will see same result
//OUTPUT: 10, 32
alert( arr1.join() );
alert( arr2.join() );
arr1, arr2 를 선언함과 동시에 값을 생성하였습니다. 그 후 한번에 arr1, arr2 를 초기화하였습니다. 문제는 위 두 변수가 같은 곳은 참고하고 있게 되었다는 것입니다. 결국 두 값은 동일한 변수가 되어 버렸습니다.
서로 다른 값을 push() 했지만 결과는 한곳에 두번 push() 한 것과 같습니다.
출처: http://faultnote.tistory.com/308 [Fault Note]
반응형
Comments