른록노트

[Javascript] 실수하기 쉬운 유형 - 변수 = 변수 해버리면 위치값이 변함 본문

Programming/[Javascript]

[Javascript] 실수하기 쉬운 유형 - 변수 = 변수 해버리면 위치값이 변함

른록 2017. 9. 28. 13:37

만약

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() );



arr1, arr2 를 선언함과 동시에 값을 생성하였습니다. 그 후 한번에 arr1, arr2 를 초기화하였습니다. 문제는 위 두 변수가 같은 곳은 참고하고 있게 되었다는 것입니다. 결국 두 값은 동일한 변수가 되어 버렸습니다.

서로 다른 값을 push() 했지만 결과는 한곳에 두번 push() 한 것과 같습니다.

출처: http://faultnote.tistory.com/308 [Fault Note]






반응형
Comments