# Strings
# quotes : 문자열 single quotes ''
- 일관된 방식으로 정의되는 문자열 사용
// bad
const name = "Capt. Janeway";
// bad - template literals: 줄바꿈, interpolation 일때 사용
const name = `Capt. Janeway`;
// good
const name = 'Capt. Janeway';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 100 자가 넘는 문자열: \,+ 으로 끊지 말것.
- 끊어진 문자열 : 작업하기가 힘들고 코드를 검색하기 어렵게 만든다.
// bad
const errorMessage = 'This is a super long error that was thrown because \
of Batman. When you stop to think about how Batman had anything to do \
with this, you would get nowhere \
fast.';
// bad
const errorMessage = 'This is a super long error that was thrown because ' +
'of Batman. When you stop to think about how Batman had anything to do ' +
'with this, you would get nowhere fast.';
// good
const errorMessage = 'This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.';
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# prefer-template, template-curly-spacing : 계산된 문자열을 만들 때 : 탬플릿 스트링 > +
- Template 스트링
- 가독성
- 줄 바꿈 -> 엔터
- interpolation
{something}
( 블록이 아님)
// bad
function sayHi(name) {
return 'How are you, ' + name + '?';
}
// bad
function sayHi(name) {
return ['How are you, ', name, '?'].join();
}
// bad
function sayHi(name) {
return `How are you, ${ name }?`;
}
// good
function sayHi(name) {
return `How are you, ${name}?`;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# no-eval : 문자열 eval() 사용 말것 : 많은 취약점
- 신뢰할 수없는 코드를 사용하면 여러 가지 주입 공격에 대해 프로그램을 열 수 있습니다
# no-useless-escape : 문자열 escape characters : Backslashes -> template string
- Backslashes 은 가독성 저하
- template string 으로 backslash 를 줄일 수 있다.
// bad
const foo = '\'this\' \i\s \"quoted\"';
// good
const foo = '\'this\' is "quoted"';
const foo = `my name is '${name}'`;
1
2
3
4
5
6
2
3
4
5
6
- 문자열, 템플릿 리터럴 및 정규식에서 일반 문자 이스케이프 -> 효과없음
let foo = "hol\a"; // > foo = "hola"
let bar = `${foo}\!`; // > bar = "hola!"
let baz = /\:/ // same functionality with /:/
1
2
3
2
3