[Day 17] string 타입 + boolean 타입
string 타입
-
템플릿 리터럴 (Template Literal)
- 문자열 리터럴의 일종으로, ES2015에서 도입되었다. backtick(`)으로 문자열을 둘러싸서 사용한다.
- 템플릿 리터럴의 내삽(interpolation) 기능을 이용하면, 문자열을 동적으로 생성하는 코드를 쉽게 작성할 수 있다. -
${}
- 여러 줄로 이루어진 문자열을 쉽게 표현할 수 있다는 장점이 있다.
- 특수한 형태의 함수 호출 기능을 지원한다. 이를 ‘tagged template literal’ 이라고 한다. -> 주로 다른 언어를 Javascript와 통합할 때 사용한다.
-
Escape Sequence
-
특수문자를 문자열에 넣거나, 직접 유니코드 코드포인트를 사용해서 문자를 넣을 수 있도록 해준다.
표기법 문자 \'
홑따옴표 \"
쌍따옴표 \\
백슬래시 \n
라인 피드(LF) \r
캐리지 리턴(CR) \t
탭 \uXXXX
유니코드 문자 \u{X...}
유니코드 문자 \$
달러 -
윈도우에서
Enter
를 입력할 경우\r\n
(CRLF)값이 입력된다. 그러나 맥이나 리눅스에서는\n
(LF)값이 입력된다. 같은 Enter키여도 입력 값이 다르기 때문에 호환성 문제가 발생할 수 있다. (웹에서는 LF(Line Feed)를 쓰는 것이 관례다.)
-
-
문자열과 연산자
-
문자열과 숫자가 섞여 있을 경우 연산 순서에 주의해야 한다.
'number' + 1 + 3 // 'number13' 1 + 3 + 'number' // '4number' // 숫자는 왼쪽부터 묶어서 계산하기 때문에 숫자가 먼저 연산된다.
-
문자열 간의 부등호 비교는 유니코드 코드포인트를 비교한다.
'a' < 'b' // true 'aaa' < 'abc' // true 'a' < 'Z' // false '한글' < '한국어' //false '2' < '10' // false // 유니코드 코드포인트 비교는 사전순 비교가 아니라 맨 앞글자 부터 한글자씩 비교한다는 것을 주의해야 한다.
-
유니코드 코드포인트를 사전순으로 비교하려면
localeCompare
메소드를 사용해야 한다.'b'.localeCompare('a'); // 1 'b'.localeCompare('b'); // 0 'b'.localeCompare('z'); // -1 'b'.localeCompare('Z'); // -1 '가나다'.localeCompare('마바사'); // -1
-
문자열을 배열로 바꾸기
[...'hello']; // ['h', 'e', 'l', 'l', 'o']
-
-
속성 및 메소드
-
string 타입도 wrapper object의 속성과 메소드를 사용할 수 있다.
// 문자열의 길이 알아내기 'hello'.length; // 5 // 여러 문자열 연결하기 'hello'.concat('fun', 'javascript') // 'hellofunjavascript' // 특정 문자열을 반복하는 새 문자열 생성하기 '*'.repeat(3); // '***' // 특정 문자열이 포함되어 있는지 확인하기 'hello javascript'.includes('hello'); // true 'hello javascript'.startsWith('he'); // true 'hello javascript'.endsWith('ript'); // true 'hello javascript'.indexOf('java'); // 6 // 문자열의 특정 부분을 바꾼 새 문자열 생성하기 'hello javascript'.replace('java', 'type'); // 'hello typescript' // 문자열의 일부를 잘라낸 새 문자열 생성하기 (원본 문자열을 변경하지는 않는다.) 'hello'.slice(2, 4); // 'll' // 좌우 공백문자를 제거한 새 문자열 생성하기 ' hello '.trim(); // 'hello' ' hello '.trimLeft(); // 'hello ' ' hello '.trimRight(); // ' hello' // 좌우 공백문자를 추가한 새 문자열 생성하기 'hello'.padStart(8); // ' hello' 'hello'.padEnd(8); // 'hello ' // 문자열을 특정 문자를 기준으로 잘라 새 배열 생성하기 'hello!fun!javavscript'.split('!'); // ['hello', 'fun', 'javascript'] 'hello'.split(''); // ['h', 'e', 'l', 'l', 'o'] // 모든 문자를 소문자, 혹은 대문자로 변환한 새 문자열 생성하기 'Hello JavaScript'.toLowerCase(); // 'hello javascript' 'Hello JavaScript'.toUpperCase(); // 'HELLO JAVASCRIPT'
-
boolean 타입
-
‘진리값’ 이라고도 부른다. 프로그래밍에서의 진리값은 어떤 조건이 참(true)인지 거짓(false)인지를 나타내기 위해 사용한다.
-
삼항 연산자 (ternary operator)
true ? 1 : 2; // 1 false ? 1 : 2; // 2
- if ~ else 문과 다른 점
- 삼항 연산자는 표현식이지만 if ~ else 문은 표현식이 아니기 때문에 변수 or 상수에 대입할 수 없다.
- if ~ else 문은 {} 안에서 여러 구문을 실행할 수 있지만, 삼항 연산자는 여러 구문이 아닌 하나의 표현식만 실행할 수 있다.
- if ~ else 문과 다른 점
-
truthy & falsy
- boolean 타입이 와야 하는 자리에 다른 타입의 값이 와도 에러가 나지 않기도 한다.
- 어떤 값들은
true
로, 어떤 값들은false
로 취급되는데, true로 취급되는 값들을truthy
, false로 취급되는 값들을falsy
라고 부른다. falsy
로 취급되는 값들- false
- null
- undefined
- 0
- NaN
- ’’ (empty)
- falsy를 제외한 모든 값들은 truthy 로 취급된다.
-
다른 타입의 값을 진리값으로 변환하기
- 어떤 값을 명시적으로 boolean 타입으로 변환해야 할 때 이러한 방법을 사용한다.
!!'hello'; // true (truthy를 true로) !!NaN; // false (falsy를 false로) Boolean('hello'); // true
댓글남기기