관리 메뉴

Daehyunii's Dev-blog

05μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ, 06μž₯ 데이터 νƒ€μž… λ³Έλ¬Έ

πŸ“š Language & CS knowledge/JavaScript (λͺ¨λ˜μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive)

05μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ, 06μž₯ 데이터 νƒ€μž…

Daehyunii 2022. 6. 23. 20:57

05μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ

5.1 κ°’

  κ°’μ΄λž€ ν‘œν˜„μ‹μ΄ ν‰κ°€λ˜μ–΄ μƒμ„±λœ κ²°κ³Όλ₯Ό λ§ν•œλ‹€. ν‰κ°€λž€ 식을 ν•΄μ„ν•΄μ„œ 값을 μƒμ„±ν•˜κ±°λ‚˜ μ°Έμ‘°ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

var sum 10 + 20; // 30
//10 + 20은 ν‰κ°€λ˜μ–΄ 숫자 κ°’ 30을 μƒμ„±ν•˜κ³  숫자 κ°’ 30이 λ³€μˆ˜ sum에 ν• λ‹Ήλœλ‹€.

λ³€μˆ˜λŠ” ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν™•λ³΄ν•œ λ©”λͺ¨λ¦¬ 곡간 자체 λ˜λŠ” κ·Έ λ©”λͺ¨λ¦¬ 곡간을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ 뢙인 이름이라고 ν–ˆλŠ”λ°, λ”°λΌμ„œ λ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” 것은 'κ°’'이닀. 값은 λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 생성할 수 μžˆλ‹€. μœ„ 예제처럼 μ‹μœΌλ‘œ 생성할 μˆ˜λ„ μžˆμ§€λ§Œ κ°€μž₯ 기본적인 방법은 'λ¦¬ν„°λŸ΄'을 μ‚¬μš©ν•˜λŠ” 것이닀.

 

5.2 λ¦¬ν„°λŸ΄

  λ¦¬ν„°λŸ΄μ΄λž€ μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” 문자 λ˜λŠ” μ•½μ†λœ 기호λ₯Ό μ‚¬μš©ν•΄ 값을 μƒμ„±ν•˜λŠ” ν‘œκΈ°λ²•μ„ λ§ν•œλ‹€.

//숫자 λ¦¬ν„°λŸ΄ 3
var num = 3;
//숫자 λ¦¬ν„°λŸ΄ 3이 ν‰κ°€λ˜μ–΄ 숫자 κ°’ 3을 μƒμ„±ν•˜κ³ , num λ³€μˆ˜μ— 숫자 κ°’ 3을 ν• λ‹Ήν•œλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” μ‹œμ μΈ λŸ°νƒ€μž„μ— λ¦¬ν„°λŸ΄μ„ 평가해 값을 μƒμ„±ν•œλ‹€. 즉, λ¦¬ν„°λŸ΄μ€ 값을 μƒμ„±ν•˜κΈ° μœ„ν•΄ 미리 μ•½μ†ν•œ ν‘œκΈ°λ²•μ΄λΌκ³  ν•  수 μžˆλ‹€. λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ μ’…λ₯˜(data type)의 값을 생성할 수 μžˆλ‹€.

 

5.3 ν‘œν˜„μ‹

  ν‘œν˜„μ‹μ΄λž€ κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” 문이닀. 즉, ν‘œν˜„μ‹μ΄ ν‰κ°€λ˜λ©΄ μƒˆλ‘œμš΄ 값을 μƒμ„±ν•˜κ±°λ‚˜ κΈ°μ‘΄ 값을 μ°Έμ‘°ν•œλ‹€. μœ„μ— μ •λ¦¬ν•œ λ¦¬ν„°λŸ΄μ€ κ°’μœΌλ‘œ ν‰κ°€λœλ‹€. κ·ΈλŸ¬λ―€λ‘œ λ¦¬ν„°λŸ΄λ„ ν‘œν˜„μ‹μ΄λ‹€.(λ¦¬ν„°λŸ΄μ€ κ·Έ 자체둜 ν‘œν˜„μ‹μ΄λ‹€.)

var score = 50 + 50;
//50 + 50은 숫자 λ¦¬ν„°λŸ΄κ³Ό μ—°μ‚¬μžλ‘œ 이뀄져 μžˆλ‹€. 50 + 50은 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ ν‰κ°€λ˜μ–΄
//κ°’ 100을 μƒμ„±ν•˜λ―€λ‘œ ν‘œν˜„μ‹μ΄λ‹€.

score;
//λ³€μˆ˜ μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•˜λ©΄ λ³€μˆ˜ κ°’μœΌλ‘œ ν‰κ°€λœλ‹€. μ‹λ³„μž μ°Έμ‘°λŠ” 값을 μƒμ„±ν•˜μ§€λŠ” μ•Šμ§€λ§Œ κ°’μœΌλ‘œ ν‰κ°€λ˜λ―€λ‘œ
//ν‘œν˜„μ‹μ΄λ‹€.

ν‘œν˜„μ‹μ€ κ°’μœΌλ‘œ ν‰κ°€λœλ‹€. μ΄λ•Œ ν‘œν˜„μ‹κ³Ό ν‘œν˜„μ‹μ΄ ν‰κ°€λœ 값은 λ™λ“±ν•œ 관계, λ™μΉ˜λ‹€. κ·ΈλŸ¬λ―€λ‘œ ν‘œν˜„μ‹μ€ κ°’μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€.

 

5.4 λ¬Έ == λͺ…λ Ήλ¬Έ

  λ¬Έμ΄λž€, ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•˜λŠ” κΈ°λ³Έ λ‹¨μœ„μ΄μž μ΅œμ†Œ μ‹€ν–‰ λ‹¨μœ„λ‹€. 문의 μ§‘ν•©μœΌλ‘œ 이뀄진 것이 λ°”λ‘œ ν”„λ‘œκ·Έλž¨μ΄λ©°, 문을 μž‘μ„±ν•˜κ³  μˆœμ„œμ— 맞게 λ‚˜μ—΄ν•˜λŠ” 것이 ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€. 문은 μ—¬λŸ¬ ν† ν°μœΌλ‘œ κ΅¬μ„±λœλ‹€.

ν† ν°μ΄λž€, 문법적인 의미λ₯Ό 가지며, λ¬Έλ²•μ μœΌλ‘œ 더 이상 λ‚˜λˆŒ 수 μ—†λŠ” μ½”λ“œμ˜ κΈ°λ³Έ μš”μ†Œλ₯Ό μ˜λ―Έν•œλ‹€. ex)ν‚€μ›Œλ“œ, μ‹λ³„μž, μ—°μ‚°μž, λ¦¬ν„°λŸ΄ λ“±

 

5.5 μ„Έλ―Έμ½˜λ‘ κ³Ό μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž… κΈ°λŠ₯

  μ„Έλ―Έμ½˜λ‘ (;)은 문의 μ’…λ£Œλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. 즉, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ„Έλ―Έμ½œλ‘ μœΌλ‘œ 문이 μ’…λ£Œν•œ μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜κ³  순차적으둜 ν•˜λ‚˜μ”© 문을 μ‹€ν–‰ν•œλ‹€. λ”°λΌμ„œ 문을 끝낼 λ•ŒλŠ” μ„Έλ―Έμ½œλ‘ μ„ λΆ™μ—¬μ•Ό ν•œλ‹€. 단, 0개 μ΄μƒμ˜ 문을 μ€‘κ΄„ν˜Έλ₯Ό 묢은 μ½”λ“œλΈ”λ‘( {...} )λ’€μ—λŠ” μ„Έλ―Έμ½œλ‘ μ„ 뢙이지 μ•ŠλŠ”λ‹€. μ½”λ“œ 블둝은 μ–Έμ œλ‚˜ 문의 μ’…λ£Œλ₯Ό μ˜λ―Έν•˜λŠ” 자체 쒅결성을 κ°–κΈ° λ•Œλ¬Έμ΄λ‹€. ν•˜μ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ„Έλ―Έμ½œλ‘ μ€ μƒλž΅ κ°€λŠ₯ν•˜λ‹€. μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž… κΈ°λŠ₯을 μ•”λ¬΅μ μœΌλ‘œ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. κ·ΈλŸ¬λ‚˜ 개발자의 예츑과 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ κ°„ν˜Ή μžˆμœΌλ―€λ‘œ, μ„Έλ―Έμ½œλ‘ μ„ λΆ™μ΄λŠ”κ²Œ μ’‹λ‹€.

 

5.6 ν‘œν˜„μ‹μΈ λ¬Έκ³Ό ν‘œν˜„μ‹μ΄ μ•„λ‹Œ λ¬Έ

  ν‘œν˜„μ‹μ€ 문의 일뢀일 μˆ˜λ„ 있고 κ·Έ 자체둜 문이 될 μˆ˜λ„ μžˆλ‹€.

var x = 3; //κ·Έ 자체둜 문이 λ˜λŠ” ν‘œν˜„μ‹
var i = x + 4; //xλŠ” 문의 일뢀뢄인 ν‘œν˜„μ‹(i도 κ°’μœΌλ‘œ ν‰κ°€λ˜λ―€λ‘œ ν‘œν˜„μ‹μž„)

λ¬Έμ—λŠ” ν‘œν˜„μ‹μΈ λ¬Έκ³Ό ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문이 μžˆλ‹€. ν‘œν˜„μ‹μΈ 문은 κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” 문이며, ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문은 κ°’μœΌλ‘œ 평가될 수 μ—†λŠ” 문을 λ§ν•œλ‹€. λ³€μˆ˜ 선언문은 κ°’μœΌλ‘œ 평가될 수 μ—†μœΌλ―€λ‘œ, ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문이며, 할당문은 κ°’μœΌλ‘œ 평가될 수 μžˆμœΌλ―€λ‘œ, ν‘œν˜„μ‹μΈ 문이닀.

ν‘œν˜„μ‹μΈ λ¬Έκ³Ό ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문을 κ΅¬λ³„ν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•˜κ³  λͺ…λ£Œν•œ 방법은 λ³€μˆ˜μ— ν• λ‹Ήν•΄ λ³΄λŠ” 것이닀. ν‘œν˜„μ‹μΈ 문은 κ°’μœΌλ‘œ 평가 될 수 μžˆμœΌλ―€λ‘œ λ³€μˆ˜μ— ν• λ‹Ήν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문은 κ°’μœΌλ‘œ 평가될 수 μ—†μœΌλ―€λ‘œ λ³€μˆ˜μ— ν• λ‹Ήν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 

var x; //λ³€μˆ˜ xμ„ μ–Έ
var i; //λ³€μˆ˜ iμ„ μ–Έ
i = var x; //λ³€μˆ˜ x 선언문은 λ³€μˆ˜ i에 ν• λ‹Ήν•  수 μ—†λ‹€.(SyntaxErrorλ°œμƒ)
//κ·ΈλŸ¬λ―€λ‘œ var x;λŠ” ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문이닀.

var y; //λ³€μˆ˜ μ„ μ–Έ
y = 100; //κ°’μ˜ ν• λ‹Ή
i = y = 100; // λ³€μˆ˜ yλŠ” κ°’μœΌλ‘œ ν‰κ°€λ˜λ―€λ‘œ i에 ν• λ‹Ήν•  수 μžˆλ‹€.
//κ·ΈλŸ¬λ―€λ‘œ y = 100;은 ν‘œν˜„μ‹μΈ 문이닀.

ν‘œν˜„μ‹μΈ 문인 할당문은 ν• λ‹Ήν•œ κ°’μœΌλ‘œ ν‰κ°€λœλ‹€. 즉, y = 100은 yλ³€μˆ˜μ— ν• λ‹Ήν•œ κ°’ 100으둜 ν‰κ°€λœλ‹€. 

 

@κΈ°μ΄ˆκ°œλ… 

-μ™„λ£Œ κ°’ : 크둬 개발자 λ„κ΅¬μ—μ„œ ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문을 μ‹€ν–‰ν•˜λ©΄ μ–Έμ œλ‚˜ undefinedλ₯Ό 좜λ ₯ν•œλ‹€. 이λ₯Ό μ™„λ£Œ 값이라 ν•œλ‹€. μ™„λ£Œ 값은 ν‘œν˜„μ‹μ˜ 평가 κ²°κ³Όκ°€ μ•„λ‹ˆλ―€λ‘œ, λ‹€λ₯Έ κ°’κ³Ό 같이 λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†κ³  μ°Έμ‘°ν•  μˆ˜λ„ μ—†λ‹€. 참고둜 개발자 λ„κ΅¬μ—μ„œ ν‘œν˜„μ‹μΈ 문을 μ‹€ν–‰ν•˜λ©΄ μ–Έμ œλ‚˜ ν‰κ°€λœ 값을 λ°˜ν™˜ν•œλ‹€.

 

06μž₯ 데이터 νƒ€μž… == νƒ€μž… == 'κ°’'의 μ’…λ₯˜

  μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 7개의 데이터 νƒ€μž…μ„ μ œκ³΅ν•œλ‹€. 

ꡬ뢄 데이터 νƒ€μž… μ„€λͺ…
μ›μ‹œ νƒ€μž… 숫자 νƒ€μž… 숫자(μ •μˆ˜,μ‹€μˆ˜ κ΅¬λΆ„μ—†μŒ)
λ¬Έμžμ—΄ νƒ€μž… λ¬Έμžμ—΄
λΆˆλ¦¬μ–Έ νƒ€μž… true, false
undefined νƒ€μž… varν‚€μ›Œλ“œ λ³€μˆ˜μ— μ΄ˆκΈ°ν™” λ˜λŠ” κ°’
null νƒ€μž… 값이 μ—†λ‹€λŠ” 것을 λͺ…μ‹œ ν•  λ•Œμ˜ κ°’
symbol νƒ€μž… ES6에 μΆ”κ°€λœ 7번째 νƒ€μž…
객체 νƒ€μž… 객체,λ°°μ—΄,ν•¨μˆ˜ λ“±

6.1 숫자 νƒ€μž…(number)

  μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 'C'λ‚˜ 'Java'와 λ‹€λ₯΄κ²Œ ν•˜λ‚˜μ˜ 숫자 νƒ€μž…λ§Œ μ‘΄μž¬ν•œλ‹€. ECMAScript 사양에 λ”°λ₯΄λ©΄ 숫자 νƒ€μž…μ˜ 값은 배정밀도 64λΉ„νŠΈ 

λΆ€λ™μ†Œμˆ˜μ  ν˜•μ‹μ„ λ”°λ₯Έλ‹€. 즉, λͺ¨λ“  수λ₯Ό μ‹€μˆ˜λ‘œ μ²˜λ¦¬ν•˜λ©°, μ •μˆ˜λ§Œ ν‘œν˜„ν•˜κΈ° μœ„ν•œ 데이터 νƒ€μž…μ€ λ³„λ„λ‘œ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄λŠ” μ •μˆ˜λ‘œ ν‘œμ‹œ λœλ‹€ 해도 사싀은 μ‹€μˆ˜λΌλŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ μ •μˆ˜λ‘œ ν‘œμ‹œλ˜λŠ” 수끼리 λ‚˜λˆ„λ”λΌλ„ μ‹€μˆ˜κ°€ λ‚˜μ˜¬ 수 μžˆλ‹€. 

μ •μˆ˜, μ‹€μˆ˜, 2μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜ λ¦¬ν„°λŸ΄μ€ λͺ¨λ‘ λ©”λͺ¨λ¦¬μ— 배정밀도 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜μ  ν˜•μ‹μ˜ 2μ§„μˆ˜λ‘œ μ €μž₯되고, μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 2μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ 데이터 νƒ€μž…μ„ μ œκ³΅ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 이듀 값을 μ°Έμ‘°ν•˜λ©΄ λͺ¨λ‘ 10μ§„μˆ˜λ‘œ ν•΄μ„λœλ‹€.

console.log(3/2); // 1.5

숫자 데이터 νƒ€μž…μ˜ 좔가적인 μ„Έ 가지 νŠΉλ³„ν•œ κ°’

1. Infinity : μ–‘μ˜ λ¬΄ν•œλŒ€

2. -Infinity : 음의 λ¬΄ν•œλŒ€

3. NaN : μ‚°μˆ  μ—°μ‚° λΆˆκ°€(μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λŒ€/μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜κΈ° λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ•Ό 함 ex)μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” Nan은 μ‹λ³„μžλ‘œ 해석함)

 

6.2 λ¬Έμžμ—΄ νƒ€μž…(string)

  λ¬Έμžμ—΄ νƒ€μž…μ€ ν…μŠ€νŠΈ 데이터λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•œλ‹€. λ¬Έμžμ—΄μ€ 16λΉ„νŠΈ μœ λ‹ˆμ½”λ“œ 문자의 μ§‘ν•©μœΌλ‘œ μ „ 세계 λŒ€λΆ€λΆ„μ˜ 문자λ₯Ό ν‘œν˜„ ν•  수 μžˆλ‹€. λ¬Έμžμ—΄μ€ μž‘μ€λ”°μ˜΄ν‘œ, ν°λ”°μ˜΄ν‘œ, λ°±ν‹±μœΌλ‘œ ν…μŠ€νŠΈλ₯Ό κ°μ‹Έμ„œ ν‘œν˜„ν•œλ‹€. (κ°€μž₯ 일반적인 ν‘œκΈ°λ²•μ€ μž‘μ€λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.)

var string;
string = 'λ¬Έμžμ—΄'
string = "λ¬Έμžμ—΄"
string = `λ¬Έμžμ—΄`

λ‹€λ₯Έ νƒ€μž…κ³Ό λ‹€λ₯΄κ²Œ λ¬Έμžμ—΄μ— λ”°μ˜΄ν‘œλ₯Ό κ°μ‹ΈλŠ” μ΄μœ λŠ” ν‚€μ›Œλ“œλ‚˜ μ‹λ³„μž 같은 토큰과 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄μ„œλ‹€. 

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ¬Έμžμ—΄μ€ μ›μ‹œ νƒ€μž…μ΄λ©°, λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 값이닀.(μžμ„Έν•œ λ‚΄μš©μ€ ν›„μˆ )

 

6.3 ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄(template literal)

  ES6λΆ€ν„° ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ΄λΌκ³  ν•˜λŠ” μƒˆλ‘œμš΄ λ¬Έμžμ—΄ ν‘œκΈ°λ²•μ΄ λ„μž…λ˜μ—ˆλ‹€. ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ€ νŽΈλ¦¬ν•œ λ¬Έμžμ—΄ 처리 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.

ν…”ν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ€ λŸ°νƒ€μž„μ— 일반 λ¬Έμžμ—΄λ‘œ λ³€ν™˜λ˜μ–΄ μ²˜λ¦¬λœλ‹€. ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ€ λ°±ν‹±(` `)을 μ‚¬μš©ν•΄ ν‘œν˜„ν•œλ‹€.

var string = `Template literal`

 

6.3.1 멀티라인 λ¬Έμžμ—΄

  일반 λ¬Έμžμ—΄ λ‚΄μ—μ„œλŠ” μ€„λ°”κΏˆ(κ°œν–‰)이 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ 일반 λ¬Έμžμ—΄ λ‚΄μ—μ„œλŠ” μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€ 의미 μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€ 의미
\0 Null \v νƒ­(수직)
\b 백슀페이슀 \uXXXX μœ λ‹ˆμ½”λ“œ
\f νΌν”Όλ“œ \' μž‘μ€λ”°μ˜΄ν‘œ
\n κ°œν–‰(Line Feed) \" ν°λ”°μ˜΄ν‘œ
\r κ°œν–‰(Carrige Return) \\ λ°±μŠ¬λž˜μ‹œ
\t νƒ­(μˆ˜ν‰)    

λ¬Έμžμ—΄ λ‚΄μ—μ„œ κ°œν–‰μ„ ν•  λ•ŒλŠ” 일반적으둜 (\n)을 μ‚¬μš©ν•΄ κ°œν–‰ν•œλ‹€. 

var string = 'hello\nworld';
console.log(string);
/*
hello
world
*/

일반 λ¬Έμžμ—΄κ³Ό 달리 ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ λ‚΄μ—μ„œλŠ” μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³ λ„ μ€„λ°”κΏˆμ΄ ν—ˆμš©λ˜λ©°, λͺ¨λ“  곡백도 μžˆλŠ” κ·ΈλŒ€λ‘œ μ μš©λœλ‹€.

var string = `  hello
world`;
console.log(string);
/*
  hello
world
*/

 

6.3.2 ν‘œν˜„μ‹ μ‚½μž…

  λ¬Έμžμ—΄μ€ λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž +λ₯Ό μ‚¬μš©ν•΄ μ—°κ²°ν•  수 μžˆλ‹€. λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž +λŠ” ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜ 이상이 λ¬Έμžμ—΄μΈ 경우 λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚¬μžλ‘œ λ™μž‘ν•œλ‹€.(암묡적 νƒ€μž… κ°•μ œ λ³€ν™˜μ΄ λ°œμƒν•¨). κ·Έ μ™Έμ˜ κ²½μš°λŠ” 이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘ν•œλ‹€.

var first = 'heung-min';
var last = 'Son';
console.log('My name is' + first + '' + last + '.');
// My name is heung-min Son.

ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λ©΄ 보닀 가독성 μ’‹κ³  κ°„νŽΈν•˜κ²Œ λ¬Έμžμ—΄μ„ μ‘°ν•© ν•  수 μžˆλ‹€. ν‘œν˜„μ‹μ„ μ‚½μž…ν•˜λ €λ©΄ ${ }을 μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•œλ‹€.

var first = 'heung-min';
var last = 'Son';
console.log(`My name is ${first} ${last}.`);
// My name is heung-min Son.

ν‘œν˜„μ‹ μ‚½μž…μ€ λ°˜λ“œμ‹œ ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ λ‚΄μ—μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ΄ μ•„λ‹Œ 일반 λ¬Έμžμ—΄μ—μ„œμ˜ ν‘œν˜„μ‹ μ‚½μž…μ€ λ¬Έμžμ—΄λ‘œ μ·¨κΈ‰λœλ‹€.

var first = 'heung-min';
var last = 'Son';
console.log('My name is ${first} ${last}.');
// My name is ${first} ${last}.

 

6.4 λΆˆλ¦¬μ–Έ νƒ€μž…

  λΆˆλ¦¬μ–Έ νƒ€μž…μ˜ 값은 논리적 μ°Έ, 거짓을 λ‚˜νƒ€λ‚΄λŠ” true와 false뿐이닀.

λΆˆλ¦¬μ–Έ νƒ€μž…μ˜ 값인 true와 falseλŠ” μ œμ–΄λ¬ΈμΈ μ‘°κ±΄λ¬Έμ—μ„œ 자주 μ‚¬μš©ν•œλ‹€.

 

6.5 undefined νƒ€μž…

  undefined νƒ€μž…μ˜ 값은 undefinedκ°€ μœ μΌν•˜λ‹€.  var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ•”λ¬΅μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ undefined둜 μ΄ˆκΈ°ν™”λœλ‹€. λ”°λΌμ„œ λ³€μˆ˜ μ„ μ–Έ 이후 값을 ν• λ‹Ήν•˜μ§€ μ•ŠμœΌλ©΄ λ³€μˆ˜ μ°Έμ‘°μ‹œ,  undefined 값을 λ°˜ν™˜ν•œλ‹€. λ”°λΌμ„œ λ³€μˆ˜ μ°Έμ‘°μ‹œ undefined 값이 λ°˜ν™˜λ˜λ©΄ λ³€μˆ˜ μ„ μ–Έ 이후 값이 ν• λ‹Ήλœ 적이 μ—†λŠ” λ³€μˆ˜λΌλŠ” 것을 κ°„νŒŒ ν•  수 μžˆλ‹€.

 

6.6 null νƒ€μž…

  null νƒ€μž…μ˜ 값은 null이 μœ μΌν•˜λ‹€.(μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λŒ€/μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜λ―€λ‘œ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.) ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ null은 λ³€μˆ˜μ— 값이 μ—†λ‹€λŠ” 것을 μ˜λ„μ μœΌλ‘œ λͺ…μ‹œ ν•  λ•Œ μ‚¬μš©ν•œλ‹€. λ³€μˆ˜μ— null을 ν• λ‹Ήν•˜λŠ” 것은 λ³€μˆ˜κ°€ 이전에 μ°Έμ‘°ν•˜λ˜ 값을 더 이상 μ°Έμ‘°ν•˜μ§€ μ•Šκ² λ‹€λŠ” μ˜λ―Έλ‹€. 

μΆ”κ°€μ μœΌλ‘œ, ν•¨μˆ˜κ°€ μœ νš¨ν•œ 값을 λ°˜ν™˜ν•  수 μ—†λŠ” 경우 λͺ…μ‹œμ μœΌλ‘œ null을 λ°˜ν™˜ν•˜κΈ°λ„ ν•œλ‹€.

 

6.7 Symbol νƒ€μž…

  μ‹¬λ²Œ νƒ€μž…μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ μ›μ‹œ νƒ€μž…μ˜ 값이닀. μ‹¬λ²Œ 값은 λ‹€λ₯Έ κ°’κ³Ό μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” μœ μΌλ¬΄μ΄ν•œ 값이닀. μ‹¬λ²Œ μ΄μ™Έμ˜ μ›μ‹œ 값은 λ¦¬ν„°λŸ΄μ„ 톡해 μƒμ„±ν•˜μ§€λ§Œ μ‹¬λ²Œμ€ Symbol ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ μƒμ„±ν•œλ‹€. (μžμ„Έν•œ λ‚΄μš©μ€ ν›„μˆ , ν•¨μˆ˜ ν˜ΈμΆœμ‹œ λŒ€/μ†Œλ¬Έμž μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.)

 

6.8 객체 νƒ€μž…

  μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 데이터 νƒ€μž…μ€ 크게 μ›μ‹œ νƒ€μž…κ³Ό 객체 νƒ€μž…μœΌλ‘œ λΆ„λ₯˜λœλ‹€. μœ„μ—μ„œ μ •λ¦¬ν•œ 6가지 μ›μ‹œ νƒ€μž… μ΄μ™Έμ˜ 값은 λͺ¨λ‘ 객체 νƒ€μž…μ΄λ‹€.(μžμ„Έν•œ λ‚΄μš©μ€ ν›„μˆ )

 

6.9 데이터 νƒ€μž…μ˜ ν•„μš”μ„±

var num = 100;

  μœ„ μ½”λ“œκ°€ μ‹€ν–‰λ˜λ©΄ ν•¨μˆ˜κ°€ μ„ μ–Έλ˜κ³ , 숫자 λ¦¬ν„°λŸ΄ 100이 ν‰κ°€λ˜μ–΄, 숫자 κ°’ 100을 μ €μž₯ν•˜κΈ° μœ„ν•΄ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•œ λ‹€μŒ, ν™•λ³΄λœ λ©”λͺ¨λ¦¬μ— 숫자 κ°’ 100을 2μ§„μˆ˜λ‘œ μ €μž₯ν•œλ‹€. μ΄λŸ¬ν•œ 처리λ₯Ό ν•˜λ €λ©΄ 숫자 κ°’을 μ €μž₯ν•  λ•Œ 확보해야 ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό μ•Œμ•„μ•Ό ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 데이터 νƒ€μž…μ— 따라 정해진 크기의 λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•œλ‹€. 즉 λ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” κ°’μ˜ 데이터 νƒ€μž…μ— 따라 확보해야 ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기가 κ²°μ •λœλ‹€. (참고둜, 배정밀도 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜μ  ν˜•μ‹μ€ 8λ°”μ΄νŠΈλ₯Ό 숫자둜 ν‘œν˜„ν•¨, 즉 λ©”λͺ¨λ¦¬ μ…€ 8κ°œκ°€ ν•„μš”ν•¨)

 

값을 μ°Έμ‘°ν•˜λŠ” κ²½μš°μ—λŠ”, μ‹λ³„μž num을 톡해 숫자 νƒ€μž…μ˜ κ°’ 100이 μ €μž₯λ˜μ–΄ μžˆλŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 선두 λ©”λͺ¨λ¦¬ μ…€μ˜ μ£Όμ†Œλ₯Ό μ°Ύμ•„ 갈 수 μžˆλ‹€. μ΄λ•Œ 값을 μ°Έμ‘°ν•˜λ €λ©΄ ν•œ λ²ˆμ— 읽어 λ“€μ—¬μ•Ό ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기, 즉 λ©”λͺ¨λ¦¬ μ…€μ˜ 개수λ₯Ό μ•Œμ•„μ•Ό ν•œλ‹€. μœ„ μ½”λ“œμ˜ λ³€μˆ˜μ—λŠ” 숫자 νƒ€μž…μ˜ 값이 ν• λ‹Ήλ˜μ–΄ μžˆμœΌλ―€λ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 numλ³€μˆ˜λ₯Ό 숫자 νƒ€μž…μœΌλ‘œ μΈμ‹ν•˜κ³ , 숫자 νƒ€μž…μ€ 8λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ €μž₯λ˜λ―€λ‘œ num λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λ©΄ 8λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 값을 읽어 듀인닀.

 

λ§ˆμ§€λ§‰μœΌλ‘œ, μ°Έμ‘°λ₯Ό 톡해 읽어 듀인 숫자 κ°’ 100의 2μ§„μˆ˜λ₯Ό μ–΄λ–»κ²Œ 해석해야 ν•˜λŠ”μ§€κ°€ λ¬Έμ œλœλ‹€. λ©”λͺ¨λ¦¬μ— μ €μž₯된 값은 데이터 νƒ€μž…μ— 따라 λ‹€λ₯΄κ²Œ 해석될 수 μžˆλ‹€.( ex) 0100 0001은 숫자둜 ν•΄μ„ν•˜λ©΄ 65, λ¬Έμžμ—΄λ‘œ ν•΄μ„ν•˜λ©΄ 'A'λ‹€. ) 

 

μœ„ λ‚΄μš©μ„ κ°„λ‹¨ν•˜κ²Œ 정리해 보면, 데이터 νƒ€μž…μ΄ ν•„μš”ν•œ μ΄μœ λŠ”

첫째, 값을 μ €μž₯ν•  λ•Œ 확보해야 ν•˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄μ„œλ‹€.

λ‘˜μ§Έ, 값을 μ°Έμ‘°ν•  λ•Œ ν•œ λ²ˆμ— 읽어 λ“€μ—¬μ•Ό ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄μ„œλ‹€.

μ…‹μ§Έ, λ©”λͺ¨λ¦¬μ—μ„œ 읽어 듀인 2μ§„μˆ˜λ₯Ό μ–΄λ–»κ²Œ ν•΄μ„ν• μ§€ κ²°μ •ν•˜κΈ° μœ„ν•΄μ„œλ‹€.

 

6.10 동적 타이핑

6.10.1 동적 νƒ€μž… 언어와 정적 νƒ€μž… μ–Έμ–΄(λ³€μˆ˜ νƒ€μž…μ˜ 문제)

  Cλ‚˜ Java와 같은 정적 νƒ€μž… μ–Έμ–΄λŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λ³€μˆ˜μ— ν• λ‹Ήν•  수 μžˆλŠ” 데이터 νƒ€μž…μ„ 사전에 μ„ μ–Έν•΄μ•Ό ν•œλ‹€. 즉 λͺ…μ‹œμ  νƒ€μž… 선언이 ν•„μš”ν•˜λ‹€. 정적 νƒ€μž… μ–Έμ–΄λŠ” λ³€μˆ˜μ˜ νƒ€μž…μ„ λ³€κ²½ν•  수 μ—†κ³ , λ³€μˆ˜μ— μ„ μ–Έν•œ νƒ€μž…μ— λ§žλŠ” κ°’λ§Œ ν• λ‹Ήν•  수 μžˆλ‹€.(정적 νƒ€μž… μ–Έμ–΄)

 

λ°˜λŒ€λ‘œ, μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 정적 νƒ€μž… 언어와 λ‹€λ₯΄κ²Œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ νƒ€μž…μ„ μ„ μ–Έν•˜μ§€ μ•ŠλŠ”λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ³€μˆ˜λŠ” 정적 νƒ€μž… 언어와 같이 미리 μ„ μ–Έν•œ 데이터 νƒ€μž…μ˜ κ°’λ§Œ ν• λ‹Ήν•  수 μžˆλŠ”κ²Œ μ•„λ‹ˆλΌ μ–΄λ– ν•œ 데이터 νƒ€μž…μ˜ 값이라도 자유둭게 ν• λ‹Ή ν•   수 μžˆλ‹€. (동적 νƒ€μž… μ–Έμ–΄)

 

λ‹€μ‹œ 정리해 보자면, 정적 νƒ€μž… μ–Έμ–΄λŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” μ‹œμ μ— λ³€μˆ˜μ˜ νƒ€μž…μ΄ κ²°μ •λ˜κ³ , 동적 νƒ€μž… μ–Έμ–΄λŠ” λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” μ‹œμ μ— λ³€μˆ˜μ˜ νƒ€μž…μ΄ λ™μ μœΌλ‘œ κ²°μ •λ˜κ³  λ³€μˆ˜μ˜ νƒ€μž…μ€ μž¬ν• λ‹Ήμ„ 톡해 μ–Έμ œλ“ μ§€ λ³€κ²½ν•  수 μžˆλ‹€. 동적 νƒ€μž… μ–Έμ–΄λŠ” ꡉμž₯히 νŽΈλ¦¬ν•˜κ³  μœ μ—°ν•˜μ§€λ§Œ, λ°˜λŒ€λ‘œ μ–Έμ œλ“ μ§€ 변경될 수 μžˆμœΌλ―€λ‘œ 신뒰성은 λ–¨μ–΄μ§ˆ 수 μžˆλ‹€λŠ” 단점을 가지고 μžˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ 주의λ₯Ό μš”ν•œλ‹€.

 

β€»μ£Όμ˜μ‚¬ν•­

1. λ³€μˆ˜λŠ” κΌ­ ν•„μš”ν•œ κ²½μš°μ— ν•œν•΄ μ œν•œμ μœΌλ‘œ μ‚¬μš©ν•œλ‹€.

2. λ³€μˆ˜μ˜ 유효 λ²”μœ„λ₯Ό μ΅œλŒ€ν•œ 쒁게 λ§Œλ“€μ–΄ λ³€μˆ˜μ˜ λΆ€μž‘μš©μ„ μ–΅μ œν•œλ‹€.

3. μ „μ—­ λ³€μˆ˜λŠ” μ΅œλŒ€ν•œ μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ ν•œλ‹€.

4. λ³€μˆ˜λ³΄λ‹€λŠ” μƒμˆ˜λ₯Ό μ‚¬μš©ν•΄ κ°’μ˜ 변경을 μ–Έμ œν•œλ‹€. (const ν‚€μ›Œλ“œ : λ™μΌν•œ λ³€μˆ˜λͺ…μœΌλ‘œ λ³€μˆ˜ μž¬μ„ μ–Έ λΆˆκ°€λŠ₯, κ°’μ˜ μž¬ν• λ‹Ή λΆˆκ°€λŠ₯)

5. λ³€μˆ˜μ˜ λͺ©μ μ΄λ‚˜ 의미λ₯Ό νŒŒμ•…ν•  수 μžˆλ„λ‘ λ„€μ΄λ°ν•œλ‹€.