(์์ 23.4.26)
JS (ES6) ๋ 7๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ์ ๊ณตํ๋ค.
๊ตฌ๋ถ | ๋ฐ์ดํฐ ํ์ | ์ค๋ช |
์์ํ์ | Number | ์ซ์, ์ ์... |
String | ๋ฌธ์ | |
Boolean | ๋ ผ๋ฆฌ์ true, false | |
undefined | var ํค์๋์ ์ ์ธ๋ ๋ณ์์ ์๋ฌต์ ์ผ๋ก ํ ๋น๋๋ ๊ฐ. (์ ์ธ๋ง ๋๊ณ ์ด๊ธฐํ ์๋จ) | |
null | ๊ฐ์ด ์์์ ์๋์ ์ผ๋ก ๋ช ์ํ ๋ ์ฌ์ฉ | |
symbol | ES6 ์์ ์ถ๊ฐ๋ 7๋ฒ์งธ ํ์ | |
๊ฐ์ฒด ํ์ | ํจ์, obj, array... | ๊ฐ์ฒด, ๋ฐฐ์ด, ํจ์ ๋ฑ |
๐๏ธ 6.1 ์ซ์ ํ์
- ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ, ํ๋์ ์ซ์ ํ์ ๋ง ์กด์ฌํ๋ค.
- ์ซ์ํ์ ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ 64๋นํธ ๋ถ๋์์์ ํ์์ 2์ง์๋ก ์ ์ฅ๋จ.
- ๋ชจ๋ ์๋ ์ค์. (์ ์ํ์ ์ ๋ฐ๋ก ์์) => ์ ์๋ผ๋ฆฌ ๋๋ ๋ ์ค์๊ฐ ๋์ฌ ์ ์๋ค.
- 2์ง์, 8์ง์, 16์ง์๋ฅผ ์ํ ํ์ ๋ ์์.
- Infinity, -Infinity, NaN(not a number) ๋ ์์.
๐๏ธ 6.2 ๋ฌธ์์ด ํ์
- " ", ' ', ` ` ๋ก ํ๊ธฐ ๊ฐ๋ฅ
- ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ๊ธฐ๋ฒ ' '
- ํ๊ธฐํ๋ ๊ธฐํธ๋ฅผ ๋ฌธ์์ด๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ค๋ฅธ ๊ธฐํธ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค. ex) console.log(" ' ' "); => ' ' ์ถ๋ ฅ๋จ
- ์์ํ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ด๋ค.
๐๏ธ 6.3 ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด
- ๋ฐฑํฑ `` ์ ์ฌ์ฉํ ํ๊ธฐ๋ฒ
- ๋ฐํ์์ ์ผ๋ฐ ๋ฌธ์์ด๋ก ๋ณํ๋์ด ์ฒ๋ฆฌ๋จ.
6.3.1 ๋ฉํฐ๋ผ์ธ ๋ฌธ์์ด
์ผ๋ฐ ๋ฌธ์์ด์์๋ ์ค๋ฐ๊ฟ์ด ํ์ฉ์ด ๋์ง ์์์ ์ด์ค์ผ์ดํ ์ํธ์ค๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๐ต ๋ผ์ธ ํผ๋(\n) ์ ์บ๋ฆฌ์ง ๋ฆฌํด (\r)
- ์ด์ฐฝ๊ธฐ ํ์๊ธฐ ์ฌ์ฉ์์ ์์ฑ๋จ. ์๋๋ ๋ป ๋ค๋ฅธ๋ฐ, ์์ฆ์ ๋ ๋ค ๊ฐํ์ ์๋ฏธํจ. ์ฃผ๋ก \n ์ผ๋ก ์ฌ์ฉํจ.
- `` ๋ฐฑํฑ ์ ์ฌ์ฉํ๋ฉด escape sequence ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ค๋ฐ๊ฟ, ๊ณต๋ฐฑ ๋ฑ์ด ์๋ ๊ทธ๋๋ก ํ์ฉ๋๋ค. (HTML ์ฝ๋๋ ๊ทธ๋๋ก ๊ฐ์ ธ์ฌ ์ ์์)
6.3.2 ํํ์ ์ฝ์
๋ฌธ์์ด์ + ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์ฐ๊ฒฐํ ์ ์์.
+ => ํผ์ฐ์ฐ์ ์ค ํ๋ ์ด์์ด ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ก ๋์. ์ฆ, ํผ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ๋ฌธ์๋ก ๋ฐ๊ฟ๋ฒ๋ฆผ.
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด`` ์์๋ ${} ๋ฅผ ์ด์ฉํด ํํ์์ ์ฝ์ ํด์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๐๏ธ 6.4 ๋ถ๋ฆฌ์ธ ํ์
๋ ผ๋ฆฌ์ ์ฐธ, ๊ฑฐ์ง์ ๋ํ๋ด๋ true, false ๋ฟ.
(falsy, trusy ๊ฐ์ ์๋๊ฒ ์ค์)
๐๏ธ 6.5 undefined ํ์
var ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ์๋ฌต์ ์ผ๋ก undefined๋ก ์ด๊ธฐํ๋จ.
์ฆ, ๋ณ์ ์ ์ธ์ ์ํด ํ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์
์ฒ์ ํ ๋น์ด ์ด๋ค์ง ๋๊น์ง ๋น ์ํ๋ก ๋ด๋ฒ๋ ค๋์ง ์๊ณ undefined๋ก ์ด๊ธฐํํจ.
undefined๋ ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ํ ๋นํ๊ธฐ ์ํ ๊ฐ์ด ์๋๋ผ, JS ์์ง์ด ๋ณ์๋ฅผ ์ด๊ธฐํ ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์. ๊ทธ๋ฌ๋ undefined๋ฅผ ์๋์ ์ผ๋ก ํ ๋นํ์ง ๋ง ๊ฒ.
๋ณ์์ ๊ฐ์ด ์๋ค๋๊ฑธ ๋ช ์ํ๊ณ ์ถ๋ค๋ฉด null ์ ์ฌ์ฉํ์.
๐๏ธ 6.6 null ํ์
๋์๋ฌธ์ ๊ตฌ๋ถํ๋ฏ๋ก null ๋ก ์จ์ผํจ.
null ์ ํ ๋นํ๋ ๊ฒ์ ๋ณ์๊ฐ ์ด์ ์ ์ฐธ์กฐํ๋ ๊ฐ์ ๋ ์ด์ ์ฐธ์กฐํ์ง ์๊ฒ ๋ค๋ ์๋ฏธ.
์ฐธ์กฐ๋๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ญ๋น์ด๋ฏ๋ก JS ์์ garbage collection์ด ์ํ๋จ.
ํจ์๊ฐ ์ ํจํ ๊ฐ์ ๋ฐํํ ์ ์๋ ๊ฒฝ์ฐ ๋ช ์์ ์ผ๋ก null ์ ๋ฐํํ๊ธฐ๋ ํจ. (HTML ์์๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ฑ)
๐๏ธ 6.7 ์ฌ๋ฒ ํ์
7๋ฒ์งธ๋ก ์ถ๊ฐ๋ ๊ฐ์ผ๋ก, ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ํ์ .
์ฌ๋ฒ Symbol ์ ๋ค๋ฅธ ๊ฐ๊ณผ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ.
-> ์ด๋ฆ์ด ์ถฉ๋ํ ์ํ์ด ์๋ ๊ฐ์ฒด์ ์ ์ผํ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํจ.
์ฌ๋ฒ์ ๋ฆฌํฐ๋ด๋ก ์์ฑํ๋๊ฒ ์๋, ํจ์๋ฅผ ํธ์ถํด ์์ฑํ๋ค. ์ด ๋ ์์ฑ๋ ์ฌ๋ฒ ๊ฐ์ ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์๋๋ค.
const key = Symbol('key');
๐๏ธ 6.8 ๊ฐ์ฒด ํ์
JS ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด๋ผ๋ ๊ฒ๋ง ์์๋๊ณ ๋์ด๊ฐ
๐๏ธ 6.9 ๋ฐ์ดํฐ ํ์ ์ ํ์์ฑ
6.9.1 ๋ฐ์ดํฐ ํ์ ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณด์ ์ฐธ์กฐ
JS ์์ง์ ๋ณ์์ ํ ๋น๋๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ์ผ๋ง๋ ํ๋ณดํ ์ง ๊ฒฐ์ ํ๋ค.
๊ฐ์ ์ฐธ์กฐํ๋ ค๋ฉด ํ ๋ฒ์ ์ฝ์ด๋ค์ฌ์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ, ์ฆ ๋ฉ๋ชจ๋ฆฌ ์ ์ ๊ฐ์๋ฅผ ์์์ผํ๋ค.
=> ์ปดํฐ๋ ํ ๋น๋ ๊ฐ์ ํ์ ์ ๋ณด๊ณ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํ์ ํ ํ ์ ์ฅ๋ ๊ฐ์ ์ฝ์ด๋ค์ธ๋ค.
๐ต ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ
- ๋ฌธ์์ด๊ณผ ์ซ์ ํ์ ์ ์ธํ๊ณ ๋ ์ ํํ ์ ์ ์์. (์ ์กฐ์ฌ๋ง๋ค ๋ค๋ฆ)
- ECMAScript ์์ 64๋นํธ ๋ถ๋์์์ ํ์์ ์ฌ์ฉํ๋ค๊ณ ํ์ผ๋, 8๋นํธ๋ก ์ซ์๋ฅผ ํํํ๋ ์ ์นจ.
6.9.2 ๋ฐ์ดํฐ ํ์ ์ ์ํ ๊ฐ์ ํด์
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ค.
ex) 0100 0001 :: ์ซ์ = 65 ์ด์ง๋ง ๋ฌธ์์ด = 'A' ์
๐ต ๋ฐ์ดํฐ ํ์ ์ด ํ์ํ ์ด์ ์ ๋ฆฌ
๊ฐ์ ์ ์ฅํ ๋ ํ๋ณดํด์ผ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด
๊ฐ์ ์ฐธ์กฐํ ๋ ํ๋ฒ์ ์ฝ์ด ๋ค์ฌ์ผ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด
๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด ๋ค์ธ 2์ง์๋ฅผ ์ด๋ป๊ฒ ํด์ํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด
๐๏ธ 6.10 ๋์ ํ์ดํ
6.10.1 ๋์ ํ์ ์ธ์ด์ ์ ์ ํ์ ์ธ์ด
JS๋ ๋์ ํ์ .
์ ์ ํ์ ์ธ์ด๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ํ์ ๋ ํจ๊ป ์ ์ธํด์ค์ผํจ. -> ๋ช ์์ ํ์ ์ ์ธ, ํ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
๋์ ํ์ ์ธ์ด๋ ๋ฏธ๋ฆฌ ์ ์ธํ ํ์ ์ธ์, ์ด๋ค ๋ฐ์ดํฐ์ ๊ฐ์ด๋ผ๋ ์์ ๋กญ๊ฒ ํ ๋น์ด ๊ฐ๋ฅํ๋ค.
typeof ๋ก ๋ฐ์ดํฐ ํ์ ์ ์ ์ ์๋ค.
JS์ ๋ณ์๋ ์ ์ธ์ด ์๋๋ผ, ํ ๋น์ ์ํด ํ์ ์ด ๊ฒฐ์ (ํ์ ์ถ๋ก ) ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌํ ๋น์ ์ํด ๋ณ์์ ํ์ ์ ์ธ์ ๋ ์ง ๋์ ์ผ๋ก ๋ณํ ์ ์์. => ๋์ ํ์ดํ
6.10.2 ๋์ ํ์ ์ ์ธ์ด์ ๋ณ์
๋ณ์์ ํ ๋นํ๋ ๊ฐ์ ํ์ ์ด ์์ ๋ก์ด ๋์ , ๊ฐ์ ํ์ธํ๊ธฐ ์ ์๋ ํ์ ์ ํ์ ํ ์ ์๋ ๋จ์ ์ด ์๋ค.
๋์ฑ์ด ๊ฐ๋ฐ์์ ์๋์๋ ์๊ด์์ด JS ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ๋ณํ๋๊ธฐ๋ ํ๋ค.
๋์ ํ์ ์ธ์ด๋ ์ ์ฐ์ฑ์ ๋์ง๋ง ์ ๋ขฐ์ฑ์ ๋จ์ด์ง.
๐ต ๋ณ์ ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ
- ๋ณ์์ ๊ฐ์๊ฐ ๋ง์ ์๋ก ์ค๋ฅ ๋ฐ์๋ฅ ๋ ๋์์ง๋ค.
- ๋ณ์์ ์ ํจ๋ฒ์๊ฐ ๋์ ์๋ก ์ค๋ฅ ๋ฐ์๋ฅ ์ด ๋๋ค.
- ์ ์ญ๋ณ์๋ ์ต๋ํ ์ง์ํ๋ค.
- ๋ณ์๋ณด๋ค๋ ์์๋ฅผ ์ด์ฉํ๊ธฐ. const
- ๋ณ์ ์ด๋ฆ์ ๋ชฉ์ , ์๋ฏธ๋ฅผ ํ์ ํ ์ ์๋๋ก ๋ค์ด๋ฐํ๊ธฐ.
- ์ฝ๋๋ ์คํดํ์ง ์๋๋ก ์์ฑํด์ผํ๋ค. ์คํด -> ์ปค๋ฎค๋์ผ์ด์ ์ด๋ ต๊ฒ ํจ -> ์์ฐ์ฑ & ํ ์ฌ๊ธฐ ์ ํ
- ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ฝ๋, ์ฆ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋์!
'๋ ์ ๋ชฉ๋ก > ๋ชจ๋ฅ๋ค Modern JS Deep Dive' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ชจ๋ฅ๋ค] 08์ฅ ์ ์ด๋ฌธ (0) | 2023.04.03 |
---|---|
[๋ชจ๋ฅ๋ค] 07์ฅ ๋ฐ์ดํฐ ํ์ (7.5~7.13) (0) | 2023.04.01 |
[๋ชจ๋ฅ๋ค] 07์ฅ ๋ฐ์ดํฐ ํ์ (7.1~7.4) (0) | 2023.03.30 |
[๋ชจ๋ฅ๋ค] 05์ฅ ํํ์๊ณผ ๋ฌธ (0) | 2023.03.26 |
[๋ชจ๋ฅ๋ค] 04์ฅ ๋ณ์ (0) | 2023.03.25 |