splice()가 string에서 쓰이지 못하는 이유

앙두·2023년 5월 23일
0

JavaScript

목록 보기
17/21

새로운 지식을 얻은 걸 시작으로... JS 기초 탐험중인데요...
나빼구 다 아는 것 같은 기초...

string은 불변한 값이다

string을 배열처럼 다룰 수 있다는 지식만 가지고서, 코딩테스트를 풀다가 TypeError를 만나고 확실하게 배우게 된 기초지식 😁

문자열을 배열처럼 다룰 수 있어서, lengthindex로 접근하고 사용할 수 있다.
그러나 문자열과 배열의 차이점은,
배열참조 타입(reference type)이며 변화가능한 값(mutable value)이고,
문자열primitive type(원시 타입)이면서, immutable value(불변한 값)이다.

Array 메소드마다 mutable / immutable 한 특성을 가지고 있다.
이 말은, 원본 값의 변경유무 특성을 지니고 있다는 것이다.

splice()는 mutable한 메서드이다

Array.splice(시작인덱스, 삭제할요소갯수, [치환시킬요소1, 요소2, 요소3, ...])

splice()는 원본 배열을 변경하는 메서드다.
근데 변경 불가능한 값인 문자열에 splice()를 먹이고 있으니 TypeError 가 뜬 것이다.
= mutable한 메서드가 immutable한 값을 건드리고 있었다는 뜻

string용 메서드를 쓰던지, string을 배열로 변환시켜주고 splice()를 썼어야 했다.

+ GPT오빠 왈:
" rny_string이 문자열인 경우에는 동작하지 않습니다. splice 함수는 배열에서 사용되는 함수로, 배열의 특정 위치에 있는 요소를 수정하거나 삭제하고, 새로운 요소를 추가하는 역할을 합니다. 그러나 문자열은 수정할 수 없기 때문에 splice 함수를 사용할 수 없는 것입니다. "

앞으로는,
데이터 타입과 메서드 타입이 mutable 한 친구인지, immutable한 친구인지 알고 써야겠다 !!

화이팅 🔥

데이터타입 알고있다고 생각했는데, 오만했다...
JS 공부는 끝이 없다고 생각하고 겸손하게 기초를 꼼꼼히 파묵자

profile
쓸모있는 기술자

0개의 댓글