새로운 지식을 얻은 걸 시작으로... JS 기초 탐험중인데요...
나빼구 다 아는 것 같은 기초...
string
을 배열처럼 다룰 수 있다는 지식만 가지고서, 코딩테스트를 풀다가 TypeError
를 만나고 확실하게 배우게 된 기초지식 😁
문자열을 배열처럼 다룰 수 있어서, length
나 index
로 접근하고 사용할 수 있다.
그러나 문자열과 배열의 차이점은,
배열은 참조 타입(reference type)
이며 변화가능한 값(mutable value)
이고,
문자열은 primitive type(원시 타입)
이면서, immutable value(불변한 값)
이다.
Array 메소드마다 mutable / immutable 한 특성을 가지고 있다.
이 말은, 원본 값의 변경유무
특성을 지니고 있다는 것이다.
Array.splice(시작인덱스, 삭제할요소갯수, [치환시킬요소1, 요소2, 요소3, ...])
splice()
는 원본 배열을 변경하는 메서드다.
근데 변경 불가능한 값인 문자열에 splice()
를 먹이고 있으니 TypeError
가 뜬 것이다.
= mutable한 메서드가 immutable한 값을 건드리고 있었다는 뜻임
string용 메서드
를 쓰던지, string
을 배열로 변환시켜주고 splice()
를 썼어야 했다.
+ GPT오빠 왈:
" rny_string이 문자열인 경우에는 동작하지 않습니다. splice 함수는 배열에서 사용되는 함수로, 배열의 특정 위치에 있는 요소를 수정하거나 삭제하고, 새로운 요소를 추가하는 역할을 합니다. 그러나 문자열은 수정할 수 없기 때문에 splice 함수를 사용할 수 없는 것입니다. "
앞으로는,
데이터 타입과 메서드 타입이 mutable 한 친구인지, immutable한 친구인지 알고 써야겠다 !!
데이터타입 알고있다고 생각했는데, 오만했다...
JS 공부는 끝이 없다고 생각하고 겸손하게 기초를 꼼꼼히 파묵자