๋ณ์์๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์
์ด ์กด์ฌํ๋ค.
์ค๋์ ๋ฐ์ดํฐ ํ์
์ ์ด๋ค ์ข
๋ฅ๊ฐ ์๋์ง ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค.
์์ ํ์
(Primitive type)
์ ์ ์, ์ค์, ๋ฌธ์์ด, ๋
ผ๋ฆฌ(Boolean) ํ์
๋ฑ ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅํ๋ ํ์
์ด๋ค.
๊ฐ์ฒด ํ์
(Object type)
์ ์ฐธ์กฐ ํ์
(Reference type)
์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ๊ฐ์ฒด(Object)์ ๋ฒ์ง๋ฅผ ์ฐธ์กฐ(์ฃผ์๋ฅผ ์ ์ฅ)ํ๋ ํ์
์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ง ๊ฐ์ ํตํด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ํ์
์ด๋ค.
์์ ํ์ ์ ๊ฒฝ์ฐ ์๋์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง๋ค.
true
์ false
var
๋ let
ํค์๋๋ก ์ ์ธ๋ ๋ณ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ๋น๋๋ ๊ฐES6
์์ ์ถ๊ฐ๋ 7๋ฒ์งธ ํ์
์์ ํ์ ์์ ๋ค ๊ฐ์ ์์ํ์ ์ด ์๋ ์์ฒ๋ผ ์ธ๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ ํ์ ์ด ๋๋์ด์ ธ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ฌ๋ฒ(Symbol)ํ์ ์ ES6์์ ์๋ก ์ถ๊ฐ๋ ํ์ ์ผ๋ก ๋๋ ์์ง ๋ฐฐ์ฐ์ง ์์์ ํ์ต์ด ๋ ์ํ์์ ์ ๋ฆฌํด์ ์ฌ๋ฆด ์์ ์ด๋ค.
์ซ์๋ ๋ง๊ทธ๋๋ก ์ ์/์ค์ ๋ฑ ๋ชจ๋๋ฅผ ํฌํจํ๋ ํ์ ์ด๋ค.
์ ์
๋ ์์์ ์ดํ๊ฐ ์๋ ์ซ์(์์ ํฌํจ)์ด๊ณ ์ค์
๋ ์์์ ์ดํ๊ฐ ์๋ ์ซ์์ด๋ค.
<script>
let int = 10; // ์์ ์ ์ํ ์ซ์ ํ์
let negative = -10; // ์์ ์ ์ํ ์ซ์ ํ์
let float = 3.14 // ์ค์ํ ์ซ์ ํ์
</script>
์ฌ๊ธฐ์ ํน์ํ ์ซ์ ํ์
์ด ์๋๋ฐ NaN
๊ณผ Infinity
์ด๋ค.
NaN
์ Not a number
์ ์ฝ์๋ก ๋ง๊ทธ๋๋ก ์ซ์๊ฐ ์๋๋ผ๋ ๋ป์ด๋ค. ์ฃผ๋ก ๊ฐ์ด ์ซ์ ํ์
์ด ์๋ ๋ณ์์ ์ฐ์ฐ์ ํ์ ๋ ๋ฐ์ํ๋ ์ซ์ ํ์
์ด๋ค.
<script>
let notANumber = "์ซ์"/2 // ๋ฌธ์์ด์ 2๋ก ๋๋๋ ๊ฒฐ๊ณผ๋ NaN์ด ๋ฐํ๋๋ค.
</script>
Infinity
๋ ๋ป๋๋ก ๋ฌดํ๋๋ฅผ ์๋ฏธํ๋ค. -Infinity
์ Infinity
๊ฐ ์กด์ฌํ๋ค.
<script>
let Infi = 10 / 0 // 10์ 0 ๋๋๋ฉด "Infinity"๋ผ๋ ๊ฐ์ ๋ฐํํ๋ค.
let negativeInfi = 10 / -0 // 10์ -0 ๋๋๋ฉด "-Infinity"๋ผ๋ ๊ฐ์ ๋ฐํํ๋ค.
</script>
์ซ์ํ์์ ์ฃผ์ํ ์ ์ ๋ถ๋์์์ ์ผ๋ก ์ธํด ์ธ๊ฐ์ด ์๊ฐํ๊ธฐ์ ๊ฐ์ ์ซ์์ด์ง๋ง ์ปดํจํฐ๊ฐ ์ฐ์ฐํ๋๋ฐ๋ ๋ค๋ฅธ ์ซ์์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค.
<script>
0.1 + 0.2 == 0.3 // ์ธ๊ฐ์ 'true'๋ผ๊ณ ์๊ฐํ๋ค.
</script>
ํ์ง๋ง ์ฝ์ ๋ด์์ ์ฐ์ฐ์ ํด๋ณด๋ฉด ์๋์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
์ฌ๊ธฐ์ 0.3์ ์์์ ์ดํ์ ์ซ์๊ฐ ์๋ 0.3
์ ์๋ฏธํ์ง๋ง 0.1 + 0.2
๋ฅผ ์ฐ์ฐํ ๊ฐ์ 0.30000000000000004
์ด๋ผ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ ๋น๊ต์ false
๋ฅผ ๋ฐํํ๊ฒ ๋๋ค.
๋ฌธ์์ด ํ์
์ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
๋ฌธ์์ด ํ์
์ ํํํ ๋๋ ์์ ๋ฐ์ดํ(''), ํฐ ๋ฐ์ดํ(""), ๋ฐฑํฑ(``)์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ฐฑํฑ(``)์ ES6์์ ์ฒ์ ๋์จ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด
์ด๋ผ๊ณ ํ๋ค.
ํ์ง๋ง ๋ณดํธ์ ์ผ๋ก๋ ์์ ๋ฐ์ดํ('')๋ฅผ ์ฌ์ฉํ๋ค.
<script>
let string1 = '์ ๋ ๋ฌธ์์ด์
๋๋ค.'
let string2 = "์ ๋ ๋ฌธ์์ด์
๋๋ค."
let string3 = `์ ๋ ๋ฌธ์์ด์
๋๋ค.`
</script>
โ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ด๋?
ES6๋ถํฐ ์๋กญ๊ฒ ๋์
๋ ๋ฌธ์์ด ํ๊ธฐ๋ฒ์ด๋ค.
ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ฌ๋ฌ ์ค์ ๋ฌธ์์ด์ ํ๋ฒ์ ์ถ๋ ฅํ ์ ์๊ณ (๋ฉํฐ๋ผ์ธ), ํํ์์ ์ฝ์
ํ ์ ์๊ณ , ํ๊ทธ๋ฅผ ์ฝ์
(ํ๊ทธ๋ ํ
ํ๋ฆฟ)ํ ์๋ ์๋ค.
<script>
let case1 = `Hello
world`
</script>
์์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด ์ค๋ฐ๊ฟ์ด ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํ์ง๋ง ๋ด๊ฐ ์ ๋ ฅํ ๊ฒ๊ณผ ๋ค๋ฅธ ๋ฌธ์ ํ๋๊ฐ ์ฌ์ด์ ์๋ค.
\n
์ธ๋ฐ ์ด๊ฒ์ '์ด์ค์ผ์ดํ ์ํ์ค'๋ก ์ค๋ฐ๊ฟ, ๋ฐฑ์คํ์ด์ค, ํญ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ํ ์ ์๋ ๋ฌธ์์ด๋ค.
\n
๋ง๊ณ ๋ ๋ง์ ์ข
๋ฅ์ ์ด์ค์ผ์ดํ ์ํ์ค๊ฐ ์์ผ๋ ์์ ๋งํฌ์์ ๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ํํ์ ์ฝ์ ์ ๊ฐ๋จํ ๋ฌธ์์ด์ ์ฝ์ ํ ์ ์๋ค.
์๋์ฒ๋ผ ๋ณดํต ๋ฌธ์์ด์ ์ด์ด์ ์ฐ๊ฒฐํ ๋๋ ๋ฐ์ดํ์ ์ฐ์ฐ์ '+'๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๊ฑฐ๋กญ๊ฒ ์ด์ด์ ์ฌ์ฉํ๋ค.
<script>
// ๊ธฐ์กด์ ๋ฌธ์์ด
var name = "์ ํ์ฐ";
var age = "29";
console.log("์๋
ํ์ธ์, " + "์ ๋ " + name + "์ด๊ณ , " + "๋์ด๋ " + age + "์ด์
๋๋ค." )
</script>
ํ์ง๋ง ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์์ฃผ ๊ฐ๋จํ๊ฒ ์์ฑํ์ฌ ๊ฐ๋ ์ฑ์ ์ฌ๋ฆด ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
<script>
// ํ
ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ
var name = "์ ํ์ฐ";
var age = "29";
console.log(`์๋
ํ์ธ์, ์ ๋ ${name}์ด๊ณ ๋์ด๋ ${age}์ด์
๋๋ค.`)
</script>
์ฌ๊ธฐ์ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ํน์ง์ ๋ณ์์ ๊ฐ์ ํํ์์ ๋ฃ๊ณ ์ถ์ ๋๋ ${๋ณ์๋ช
}
์ผ๋ก ์์ฑํ๋ฉด ๋๋ค.
๋ง ๊ทธ๋๋ก ํ๊ทธ๋ฅผ ๋ฃ์ด ํํํ ์ ์๋ค.
๋ง์ฝ <ul>
ํ๊ทธ ์์ <li>
ํ๊ทธ๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด ์๋์ฒ๋ผ ์์ฑํ๋ฉด ๋๋ค.
<script>
let tag = `<ul>
<li>hello<li>
</ul>`
</script>
์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ ๋ฌธ์์ด ํ๊ธฐ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์์งํ๋ ๊ฒ์ด ์ข๋ค.
๋ฌธ์์ด์ ์ฃผ์ํ ์ ์ "๋ฐ์ดํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋์ง"์ด๋ค.
์๋์ฒ๋ผ ๋ฐ์ดํ๋ฅผ ๊ฐ์ธ๊ณ ์์ ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๋ฉด ์๋์ฒ๋ผ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
<script>
let errCase1 = "๋๋ ๋ฌธ์์ด์
๋๋ค. "๋๋ ๋ฌธ์์ด์
๋๋ค."";
let errCase2 = '๋๋ ๋ฌธ์์ด์
๋๋ค. '๋๋ ๋ฌธ์์ด์
๋๋ค.'';
</script>
์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ง์ฝ ๋ฐ์ดํ ์์ ๋ฐ์ดํ๋ฅผ ๋ฃ๊ณ ์ถ๋ค๋ฉด ๊ฐ์ธ๋ ๋ฐ์ดํ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ฐ์ธ์ ๋ฃ์ผ๋ฉด ๊ฐ์ ๋ฌธ์์ด๋ก ์ธ์ํ๋ค.
๋ํ ๋ณ์์ ๋ฌธ์์ด์ ๋ฃ๊ณ ์ถ์ ๋ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด "๋ณ์๋ช "์ผ๋ก ์ธ์ํ๋ค.
<script>
let string = hello;
</script>
์์ฒ๋ผ hello
๋ผ๋ ๋ณ์๋ช
์ ๊ฐ์ง ๋ณ์๋ฅผ ์ฐพ์์ง๋ง ์์ง ์ ์๋์ง ์์๋ค๋ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
๊ทธ๋์ ๋ฐ๋์ ๋ฌธ์์ด ๋ฐ์ดํฐ ํ์
์ ๋ณ์์ ํ ๋นํ๊ณ ์ถ๋ค๋ฉด ๋ฐ์ดํ๋ ๋ฐฑํฑ์ ์ฌ์ฉํด์ผ ํ๋ค.
ํ์ ์ค ๊ฐ์ฅ ๊ฐ๋จํ ๊ฐ 2๊ฐ์ง๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ ํ์ ์ด๋ค.
true
์ false
๋ฅผ ๋ฐํํ๋ค.
๋ถ๋ฆฌ์ธ ๊ฐ์ ์ง์ ํ ๋น์ ํ๊ธฐ๋ณด๋ค '์กฐ๊ฑด์'์ ํตํด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ ์ดํ๋ '์กฐ๊ฑด๋ฌธ'์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ์๋์ฒ๋ผ ์ฌ์ฉํ๋ค.
<script>
let num1 = 5;
let num2 = 10;
if(num1 > num2){
console.log("num1 is big");
}else{
console.log("num2 is big");
}
</script>
์กฐ๊ฑด๋ฌธ if์ ์กฐ๊ฑด์(num1 > num2
)์ด true
๋ผ๋ฉด ์ฒซ๋ฒ์งธ ๋ช
๋ น๋ฌธ(console.log("num1 is big")
)์ ์คํํ๊ณ false
์ผ ๊ฒฝ์ฐ else
์ ๋ช
๋ น๋ฌธ์ ์คํํ๊ฒ ๋๋ค.
์์์ ๋งํ ๊ฒ์ฒ๋ผ ์กฐ๊ฑด์ด ์ผ์นํ๋ ๋ช ๋ น๋ฌธ์ ์คํํ๋ ๊ฒ์ผ๋ก ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ ์ดํ๋ ์๋ก ๋ณผ ์ ์๋ค.
undefined
๋ ์์์ ์ ๋ฆฌํ ๋ฏ์ด "var
์ let
ํค์๋๋ฅผ ํตํด ์ ์ธํ ๋ณ์์ ๊ฐ์ด ํ ๋น๋์ง ์์ ์ํ์ ์๋ฌต์ ์ผ๋ก ํ๋น๋๋ ๊ฐ"์ด๋ผ๊ณ ํ๋ค.
<script>
let value;
console.log(value);
</script>
null
์ ๋ณ์์ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ช
์ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ด๋ค.
<script>
let noValue;
let empty = null;
console.log(noValue, empty);
</script>
undefined
๋ ๋ณ์๋ ์ ์ธ์ ํ์ง๋ง ๊ฐ์ด ์ ํด์ง์ง ์์ ๊ฒ์ ๋งํ๋ค.
'๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive'์์๋ ๋ณ์๊ฐ ์ ์ธ๋๋ฉด ์ฒ์ ํ ๋น์ด ์ด๋ค์ง ๋๊น์ง ๋น ์ํ๋ก ๋ด๋ฒ๋ ค๋์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด undefined๋ก ํ ๋นํ๋ค'๋ผ๊ณ ๊ธฐ์ฌ๋์ด์๋ค.
ํ์ง๋ง null
์ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์
์ด ๋น์ด์๋ค๋ผ๋ ๊ฒ์ ๋ช
์ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๊ฐ์ด๋ฏ๋ก undefined
์๋ ์ฐจ์ด๊ฐ ์๋ค.
๋ null
์ ํน์ํ ์ ์ null
์ ํ์
์ object
์ธ ๊ฒ์ด๋ค.
์ด๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๋ฐ์ '๋ธ๋๋ ์์ดํฌ'๊ฐ null
์ ํ์
์ object
๋ก ํ ๊ฒ์ ์ค์๋ผ๊ณ ์ธ์ ํ ๋ฐ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์๋ฅผ ๋ค์ ๊ณต๋ถํ๋ฉด์ ๋๋ ์ ์ 'ํ์คํ ๊ณต๋ถํ ๊ฒ์ด ๋ง๋ค'๋ผ๋ ๊ฒ์ด๋ค.
๋ณ์๋ฅผ ๊ณต๋ถํ ๋ ๊ฐ๋จํ๊ฒ ๊ณต๋ถํ๋ฉด ์ ๋นํ ์๊ฐ ๋ด์ ๋๊ธธ ์ ์๊ฒ ์ง๋ง ๋ค์ ๊ณต๋ถํ๋ ์ ์ฅ์์ ๊ฐ์๋ง์ผ๋ก ๋ง์กฑํ์ง ์๊ณ ์์ ๋ค์ ํจ๊ป ๋ณด๋ฉด์ ์ ๋ฆฌํด์ ๋์ฑ ์์๊ฐ๊ณ ์ถ์ ์์ฌ์ด ์ปค์ง๋ค.
์ง๊ธ ์ด๋ ๊ฒ ํ์คํ ์์๋๋ฉด ๋์ค์ ๊ฐ์ ๋ ํผ๋์ด ์์ ๊ฒ์ด๋ผ๋ ๊ธฐ๋๋ฅผ ๊ฐ์ง๊ณ ๋์ฑ ์ด์ฌํ ๊ณต๋ถํ๊ณ ์ค์ค๋ก ์ฐพ์๋ณด๋ ํ๋๋ฅผ ์ ์งํด์ผ๊ฒ ๋ค.