티스토리 뷰

반응형

Array.prototype.slice의 참조값
Array.prototype.slice의 참조값


Array의 Prototype method인 slice를 사용하다가 아래 결과가 이상하여 정리해본다.

const a = [1, 2, 3, 4, 5, 6].slice(0, 3);  // [1, 2, 3]
const b = [1, 2, 3];

console.log(a === b);  // false

 

slice 함수는 단순히 Array의 부분 Array를 새로 만드는 것으로 알고있었지만 정확히 말하자면 진짜로 부분 Array로 원본 Array의 메모리 주소를 참조한다. 따라서 a와 b를 비교하기 위해서는 아래와 같이 join이나 JSON.stringify를 사용하여 string값으로 비교해야한다.

 

console.log(JSON.stringify(a) === JSON.stringify(b))  // true
console.log(a.join('') === b.join(''))  // true
반응형
Total
Today
Yesterday
반응형