본문 바로가기
Programming/자바스크립트

[자바스크립트] String - 개념

by 코딩하는 랄로 2023. 10. 23.
728x90

String 

문자열은 여러 유용한 메소드를 제공하기 때문에 프로그래밍 언어에서 정말 많이 사용하는 변수 타입이다. 문자열의 생성 방법은 아래와 같이 두가지가 있다.

//방법1. new String()
const str1 = new String('John');

//방법2. 문자열 리터럴 : '', ""
const str2 = 'John'; // or "John"

 

이 때에, 주의할 점은 문자열 리터럴 방식으로 선언된 변수의 타입은 String이고, new 객체 생성자를 통해 선언된 변수의 타입은 Object라는 점이다. 그렇기 때문에 두 변수의 비교 연산을 수행하면 다음과 같은 결과가 나온다.

const str1 = new String('John');
const str2 = 'John'; // or "John"

// == : 값만 비교
console.log(str1 == str2); //true

// === : 값과 타입 비교
console.log(str1 === str2); //false

 

자바스크립트에서는 new 생성자를 통한 String 객체 생성보다는 문자열 리터럴을 통한 String 타입의 변수 선언을 더 선호한다.

 

 

 

문자열 인덱싱

자바스크립트는 문자열의 각 문자의 접근할 수 있는 방법은 문자열 인덱싱과 메소드를 이용하는 두가지 방법이 있다.

//문자열 인덱싱
let str = 'Hello World';
console.log(str[0]); //H

//메소드 : charAt()
console.log(str.charAt(0)); //H
console.log(str.charAt(100)); //'' : 아무것도 출력하지 않음

//charCodeAt() : 해당 인덱스의 문자를 ascii code로 반환
console.log(str.charCodeAt(0)); //72

 

자바스크립트 문자열 인덱싱의 특징으로는, 인덱스가 범위를 벗어나도 에러를 발생하는 것이 아닌 undefined를 출력한다. 또한 문자열 타입은 Immutable하기 때문에, 인덱싱을 통한 문자열 변경이 불가능하다.

//문자열 = Immutable
//인덱싱을 통한 문자열 변경X
let str = "Hello";
str[0] = "Y";  //에러가 발생하지는 않음
console.log(str);  //Hello

//IndexOutOfBounds => undefined
console.log(str[20]);  //undefined

 

 

 

문자열 타입으로 객체의 메소드 사용?

자바스크립트에서는 문자형 데이터를 객체화한 String 객체를 제공함으로써, String 타입의 변수 또한 String 객체에 내장되어 있는 속성 및 함수를 사용할 수 있다. 위에서 살펴본 charAt() 또한, 이러한 이유로 사용할 수 있는 String 객체의 메소드 이다.

 

또한, 문자열 타입은 immutable하기 때문에 String 객체의 메소드들은 문자열의 원본을 변화시키지 않고, 새로운 string을 만들어 리턴한다.

 

 

 

문자열의 대소 비교

자바스크립트에서는 비교 연산자를통한 문자열의 대소 비교가 가능하다. 

//문자열 비교
//각 문자의 ascii 코드 비교
console.log('a' < 'b'); //true
console.log('ab' > 'ac'); //false
console.log("AAaa" < "aaAA"); //true

//길이가 다를 때
console.log('a' < 'ab'); //true
console.log('b' > 'ab'); //true

//수치 비교
console.log("13" < 2);  // false

 

728x90