String

String 타입은 텍스트 데이터를 나타내며, UTF-16 코드 단위 수를 나타내는 16비트 부호 없는 정수 값의 나열로 인코딩됩니다. String의 각 요소는 String 내부의 위치를 차지합니다. 첫 번째 요소는 인덱스 0에, 다음 요소는 인덱스 1에 있습니다. String의 길이는 UTF-16 코드 단위의 수이며, 실제 유니코드 문자 수와 일치하지 않을 수 있습니다. 자세한 내용은 String 페이지를 참조하세요.

JavaScript String은 변경할 수 없습니다. 즉, String이 생성되면 수정할 수 없습니다. String 메서드는 현재 String의 내용을 기반으로 새 String을 만듭니다. 예를 들면, 다음과 같습니다.

  • substring()을 사용해 원래 String의 하위 String을 만들 수 있습니다.
  • 연결 연산자(+) 또는 concat()를 사용하여 두 문자열을 연결합니다.

“문자열의 타입화”를 조심하라

문자열을 사용해 복잡한 데이터를 표현하는 것이 매력적으로 보일지도 모르고, 단기적으로는 다음과 같은 장점이 있습니다.

  • 연결 연산자를 통해 복잡한 문자열을 쉽게 만들 수 있습니다.
  • 문자열은 디버깅이 쉽습니다. (출력 내용이 항상 문자열의 값과 동일)
  • 문자열은 많은 API(입력 칸 (en-US)로컬 스토리지 값, responseText와 함께 사용하는 XMLHttpRequest 등등)의 공통 분모이며 문자열로만 작업하고 싶을 수 있습니다.

규칙을 통해, 어떤 자료구조라도 문자열로 표현할 수 있습니다. 그러나 그게 좋은 방법은 아닙니다. 예를 들어, 구분자를 사용하면 (물론 JavaScript 배열이 더 적합하겠지만) 문자열로 리스트를 흉내낼 수도 있을 것입니다. 그러나 구분자를 리스트의 요소로 사용하는 순간 리스트가 망가지고 맙니다. 이제 구분자를 구분하기 위해 이스케이프 문자를 선택하고, 등등… 이 모든 것이 각자의 규칙을 필요로 하고 불필요한 유지보수 부담이 발생합니다.

문자열은 텍스트 데이터에만 사용하세요. 복잡한 데이터를 표현해야 할 땐 문자열을 구문 분석하고 적합한 추상화를 사용하세요.

JavaScript에서 문자열(String)은 iterable한 객체로 간주됩니다.

따라서 spread 연산자를 사용하여 문자열의 각 문자(character)를 개별 요소로 하는 배열을 생성할 수 있습니다.

때문에 JavaScript에서는 문자열(string)을 배열처럼 인덱스를 사용해서 각 문자에 접근할 수 있습니다. 따라서, 문자열에 대해서도 인덱스를 통한 접근이 가능합니다.

예를 들어, 문자열 '123'이 있을 때, '123'[0]'1'을 반환하고, '123'[1]'2'를 반환합니다.

추가적으로 new Set(string), …string 등 iterable한 객체들에 적용 가능한 것들을 모두 적용할 수 있습니다.

wrapper 객체 내장함수

String.indexOf(), String.includes() -문자열 포함여부 확인하는 법

string.startsWith( 탐색할 문자열, index );

const str = "Tom is thinking";
const name = "Tom";
console.log(str.startsWith(name)); // true

string.endsWith(탐색할 문자열);

This line appears after every note.

Notes mentioning this note


Here are all the notes in this garden, along with their links, visualized as a graph.

ReadmeTips설명자료 모음나의 유의 사항과 고치고자 했던점Throw error기능 목록제출용 소감문회고록1주차 피드백BoardStyle guide checklist기능 요구 사항 숫자 야구입출력 요구 사항제출용 소감문 숫자 야구 게임프로그래밍 요구 사항회고록기능 목록요구 사항제출용 소감문 자동차 경주 게임회고록Todo'기능 목록제출용 소감문 크리스마스 프로모션회고록Scpc몰입해본 경험성공한 프로젝트들1. 효과적인 학습 방식과 경험2. 성장 중 겪은 실패와 극복3. 오랜 시간 몰입했던 경험 그리고 도전4. 원하는 프로그래머 모습우테코 증빙자료효과적인 학습 방법과 결과프론트엔드 기말과제 리팩토링CssDiv에 그림자 효과 넣기FlexBabelBigintBooleanClassIife(즉시 실행 함수 표현식)Javascript style guideJavascript typesJavascriptLinked list(연결 리스트)MapMark and sweepNull typeNumberObject ForeachObject.defineproperty()ObjectPromiseReference countingSetShift 연산String.indexof(), string.includes()StringSymbolUndefined typeV8 가비지 컬렉션Async 와 awaitCall 과 apply 메서드Callback 함수Private 프로퍼티SomeThrowWrapper object가비지 컬렉션객체의 attribute기본 매개변수 문법데이터 속성메모리 관리메모리 생명 주기배열생성자(constructor)원시값접근자 속성함수 호이스팅(hoisting)함수(function)함수를 정의하는 법함수와 메소드의 차이힙과 스택Class component(클래스형 컴포넌트)DomFunction component(함수형 컴포넌트)JsxReact domReact elementReact hooksReact 생명주기ReactSpaVirtual domPropsUseeffect렌더링리렌더링마운트함수형 컴포넌트와 클래스형 컴포넌트의 차이점Github page로 배포GithubReadme 파일 작성CloneFork커밋 메시지 작성 규칙Brain stormingWeb3마이너스마트 컨트랙트페이로드(payload)Markdown(md)MermaidMvc 패턴도메인 로직비즈니스 로직Jest란Tdd(테스트 주도 개발)모킹(mocking)이란스파이(spying)이란AbiDtdNode jsReadmeThreadXml런타임 환경스키마유클리드 호제법최대공배수 알고리즘Todo list옵시디언 웹 주소