Career/웹
TIL / Javascript 값Value, 참조Reference
wood.forest
2020. 1. 1. 11:37
TIL : Today I Learned의 약자로, 대부분 깃헙에서 일일커밋을 통해 그날 배운 내용 정리하는것. 여기엔 아카이브 형식으로 + 회고 겸 간단하게 둔다!
Javascript에서 값 할당할 때
- Passed by Value : Boolean, Null, Undefined, String, Number, Symbol <- Primitive types
var variable = 1;
var copy = variable;
variable = 0;
console.log(variable); // 0
console.log(copy); // 1
- Passed by Reference : Array, Function, Object
var array = [1,2,3];
var ref = array; //값을 복사하는 것이 아니라 참조
array[0] = 0;
console.log(array); // [0,2,3]
console.log(ref); // [0,2,3]
참조 없는 복사를 하고 싶다면?
1. Json을 사용하여 직렬화 후 파싱
var array = [1,2,3];
var copy = JSON.parse(JSON.stringify( array ));
array[0] = 0;
console.log(array); // [0,2,3]
console.log(copy); // [1,2,3]
참고 : https://programmingsummaries.tistory.com/143
2. 값을 하나하나 대입
var array = [1,2,3];
var copy = [];
array.forEach(element => {
copy.push(element);
});
array[0] = 0;
console.log(array); // [0,2,3]
console.log(copy); // [1,2,3]
3. ES6 방법 (->IE 지원안됨)
var array = [1,2,3];
var copy = [...array];
array[0] = 0;
console.log(array); // [0,2,3]
console.log(copy); // [1,2,3]
참고 : https://www.samanthaming.com/tidbits/35-es6-way-to-clone-an-array
4. Slice 사용
var array = [1,2,3];
var copy = array.slice();
array[0] = 0;
console.log(array); // [0,2,3]
console.log(copy); // [1,2,3]
728x90
반응형