Array.prototype.sort와 Object.freeze

개요

Redux에서 가져온 배열을 sort함수를 사용해서 정렬할 하다가 에러가 발생했고 검색을 통해 sort함수와 freeze 함수에 대해서 정리하고자 한다.

Array.prototype.sort

sort함수는 배열을 정렬하는 함수이다. 정렬된 배열을 반환하기 때문에 원본 배열에는 변화가 없을 것이라고 착각했는데 실제 동작은 원본 배열을 정렬 후 해당 배열의 참조를 리턴한다.

const a = [1, 2, 3];
const b = a.sort((a, b) => b - a);
console.log(b); > [3, 2, 1]
console.log(a); > [3, 2, 1]
console.log(a === b) > true

Object.freeze

freeze함수에 배열이나 객체의 참조를 파라미터로 전달하면서 호출하면 해당 배열이나 객체의 property를 변경 할 수 없다. strict 모드에서만 작동한다.

const a = [1, 2, 3];
Object.freeze(a);
a.sort();
-----------------------
Uncaught TypeError: Cannot assign to read only property '0' of object '[object Array]'

좋은 웹페이지 즐겨찾기