Array.prototype.sort와 Object.freeze

장동혁·2021년 1월 6일
0

ECMA Script

목록 보기
3/4

개요

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]'
profile
기록하는 습관

0개의 댓글