| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ssg๋๊ณก์
- ํดํ ์ด๋ธ์คํผ์ปค์ฐ๊ฒฐ
- ์ํผ๋ฐ
- ์์ด์ ํ๋ธ์ถ์ฒ
- ์์ด๋ฌธ๋ฒ
- ์์ด๊ณต๋ถ
- Movie
- ssgํธ๋๋ง์ผ๋๊ณก์
- ์์ด์ ํ๋ธ
- ๋ทํ๋ฆญ์ค
- Netflix
- dp400
- ์ํ์ถ์ฒ์ ํ๋ฒ
- ์ ํ์์น์ค์ง
- ํฌ๋งํ์
- ์กด์ผ
- ์์ดํฐ
- ์ํ์ถ์ฒ
- ์กฐ์ ํฐ๋ฆฌ์ค
- ํดํ ์ด๋ธ์ค์น
- ๋ฐ๋ ผ400
- ๊ฐ๋จ๋จน์๊ณณ
- ์ฝ์คํ์ค๋ทํ
- ์ง๋ฎค๋น
- ์ํ์ถ์ฒ์ ํ๋ธ
- ์จ์ด๋ธ๊ตฌ๋
- ์ ํ์์น์ค๊ทธ
- ๊ฐ๋ฐ์ ์คํ
- English
- ์๋จ
- Today
- Total
๋ฆฌ์
[JavaScript] 3. ํ๋ณํ ๋ณธ๋ฌธ

์๋ฐ์คํฌ๋ฆฝํธ์ '๋ฌต์์ ํ๋ณํ(Implicit Type Conversion)'์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋ฐ์ดํฐ ํ์ ์ ์๋์ผ๋ก ๋ฐ๊พธ์ด ๊ณ์ฐํ๋ ์์ฃผ ํธ๋ฆฌํ์ง๋ง ์ฃผ์ํด์ผ ํ ๊ธฐ๋ฅ์ด๋ค.
.
1. ๋ง์ (+) ์ฐ์ฐ์: "๋ฌธ์์ด์ด ๊นกํจ๋ค"
์๋ฐ์คํฌ๋ฆฝํธ์์ + ์ฐ์ฐ์๋ ๋ฌธ์์ด์ด ํ๋๋ผ๋ ์์ด๋ฉด, ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ ์ด์ด ๋ถ์ฌ๋ฒ๋ฆฐ๋ค. ์ด๋ฅผ '๋ฌธ์์ด ์ฐ๊ฒฐ'์ด๋ผ ํ๋ค.
- console.log(1 + "1");
- ์ซ์ 1๊ณผ ๋ฌธ์์ด "1"์ด ๋ง๋ฌ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ซ์ 1์ ๋ฌธ์์ด "1"๋ก ๋ณํํ ๋ค, ๋ ๋ฌธ์์ด์ ๋ถ์ธ๋ค.
- ๊ฒฐ๊ณผ: "11" (๋ฌธ์์ด)
- console.log("5" + 3);
- ๋ฌธ์์ด "5"์ ์ซ์ 3์ด ๋ง๋ฌ๋ค. ์ญ์ ์ซ์ 3์ ๋ฌธ์์ด "3"์ผ๋ก ๋ณํํ์ฌ ์ด์ด ๋ถ์ธ๋ค.
- ๊ฒฐ๊ณผ: "53" (๋ฌธ์์ด)
2. ๋บ์ (-), ๊ณฑ์ (*), ๋๋์ (/) ์ฐ์ฐ์: "์ซ์๊ฐ ์ฐ์ ์ด๋ค"
๋ง์ ๊ณผ ๋ฌ๋ฆฌ, ๋บ์ ์ด๋ ๊ณฑ์ ์ ๋ฌธ์์ด๋ก ๊ณ์ฐํ ์ ์๊ธฐ ๋๋ฌธ์, ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ์ ์ํ ๊ณ์ฐ์ ์๋ํ๋ค.
- console.log(1 - "1");
- ๋ฌธ์์ด "1"์ ์ซ์ 1๋ก ๋ณํ, 1 - 1์ ๊ณ์ฐ
- ๊ฒฐ๊ณผ: 0 (์ซ์)
- console.log("5" * "2");
- ๋ฌธ์์ด "5"์ "2"๋ฅผ ๊ฐ๊ฐ ์ซ์ 5์ 2๋ก ๋ณํ,. 5 * 2๋ฅผ ๊ณ์ฐ
- ๊ฒฐ๊ณผ: 10 (์ซ์)
3. ๋ง์ง๋ง ๋ฌธ์ : true - "20"
. ์๋ฐ์คํฌ๋ฆฝํธ์์ true๋ ์ซ์ 1๋ก, false๋ 0์ผ๋ก ์ทจ๊ธ
- console.log(true - "20");
- true๋ ์ซ์ 1๋ก ๋ณํ
- "20"์ ์ซ์ 20์ผ๋ก ๋ณํ๋ฉ
- ๊ฒฐ๊ณผ: 1 - 20์ด ๋์ด -19๊ฐ ์ถ๋ ฅ
์์ฝํ์๋ฉด
- +: "๋ฌธ์์ด์ด ํ๋๋ผ๋ ์์ผ๋ฉด ๋ค ๋ฌธ์์ด๋ก ํฉ์น์!"
- -, *, /: "์ํ ๊ณ์ฐ์ ํด์ผ ํ๋ ์ผ๋จ ๋ค ์ซ์๋ก ๋ฐ๊ฟ๋ณด์!"
<๋ช ์์ ํ๋ณํ>
๋ช ์์ (Explicit) ํ๋ณํ์ ๋ง ๊ทธ๋๋ก "๋ด๊ฐ ์ง์ ํ์ ์ ๋ฐ๊พธ๊ฒ ์ด!"๋ผ๊ณ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ก ์๋๋ฅผ ๋ช ํํ๊ฒ ๋๋ฌ๋ด๋ ๊ฒ์ด๋ค.
'์๋ฌต์ ํ๋ณํ'์ด JS ์์ง์ด ๋ชฐ๋(์๋์ผ๋ก) ๋ฐ๊พธ๋ ๊ฒ์ด๋ผ๋ฉด, ๋ช ์์ ํ๋ณํ์ ํจ์๋ ๊ธฐํธ๋ฅผ ์ฌ์ฉํด ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ๋ก ํ์์ ์ง์ ํ๋ ๊ฒ์ ์ผ๋ก ์ดํดํ๋ฉด ๋๋ค.
์์๋ก ๋ณด๋ ๋ช ์์ ํ๋ณํ์ ์ด์

1. Number("123")
- ์๋: "์ด ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ซ์๋ก ์ฒ๋ฆฌํ๊ฒ ๋ค."
- ์ด์ : typeof๋ฅผ ์ฐ์ด๋ณด๋ฉด ํ์คํ string์ด์๋ ๊ฐ์ด number๋ก ๋ฐ๋. ์ฐ์ฐ ์ ์๋ฌ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ
2. parseInt("12px")
- ์๋: "์ด ๋ฌธ์์ด ์๋ถ๋ถ์ ์๋ ์ซ์๋ง ์ถ์ถํด์ ์ ์(Integer)๋ก ์ฐ๊ฒ ๋ค."
- ์ด์ : "12px"๋ผ๋ ๋ฌธ์์ด์์ ์ซ์ 12๋ง ์ ๋ฝ์๋ด์ด ๊ณ์ฐ์ ์ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. Number("12px")๋ฅผ ์ฐ๋ฉด NaN(Not a Number, ์ซ์๊ฐ ์๋)์ด ๋์ค๋๋ฐ, parseInt๋ฅผ ์ฐ๋ฉด ๋๋ํ๊ฒ ์ซ์๋ง ๊ณจ๋ผ์ค.
3. String(123)
- ์๋: "์ซ์ 123์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ฌธ์์ด๋ก ๋ฐ๊พธ๊ฒ ๋ค."
- ์ด์ : ์ซ์๋ฅผ ๊ทธ๋๋ก ์ฐ๋ฉด ์ ๋๊ณ , ๋ค๋ฅธ ๊ธ์์ ํฉ์น๊ฑฐ๋ HTML์ ํ ์คํธ๋ก ๋ฃ์ด์ผ ํ ๋ ๋ช ํํ๊ฒ ๋ฌธ์์ด๋ก ๋ณํ
4. Boolean(0)
- ์๋: "์ซ์ 0์ ์ฐธ(true)์ธ๊ฐ ๊ฑฐ์ง(false)์ธ๊ฐ ํ๋ ๋ ผ๋ฆฌ๊ฐ์ผ๋ก ๋ณํํ๊ฒ ๋ค."
- ์ด์ : JS์์ 0์ false๋ก ์ทจ๊ธ๋ฉ๋๋ค. ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ํ์ธํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
5. !!"hello" (์ด์ค ๋ถ์ )
- ์๋: "๋ฌธ์์ด์ ํ์คํ true/false ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ค."
- ์ด์ :
- ! (๋ถ์ ): "hello"๋ ์ฐธ์ธ๋ฐ ๋ถ์ (!)ํ๋ฉด false๊ฐ ๋จ
- !! (์ด์ค ๋ถ์ ): false๋ฅผ ๋ค์ ๋ถ์ ํ๋ฉด true๊ฐ ๋จ
- ์ฆ, ์ด๋ค ๋ฐ์ดํฐ๋ !!๋ฅผ ๋ถ์ด๋ฉด ๊ทธ ๋ฐ์ดํฐ๊ฐ "์ฐธ ๊ฐ์ ๊ฐ(truthy)"์ธ์ง "๊ฑฐ์ง ๊ฐ์ ๊ฐ(falsy)"์ธ์ง ํ์คํ๊ฒ true๋ false๋ก ๋ฐ๊ฟ์ฃผ๋ ํธ๋ฆญ
<์๋ฌต์ ํ๋ณํ(Implicit Type Conversion)>
์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ฐ๋ฐ์์ ์๋์ ์๊ด์์ด "๋ฐ์ดํฐ์ ํ์์ด ๋ง์ง ์์ผ๋,
์ฐ์ฐ์ด ๊ฐ๋ฅํ๋๋ก ์์์ ํ์ ์ ๋ฐ๊พธ์!"๋ผ๊ณ ํ๋จํ์ฌ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์ .
์ด๋ฅผ 'ํ์ ๊ฐ์ ๋ณํ(Type Coercion)'์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ,. ํต์ฌ์ '์ฐ์ฐ์'์ ๋ฐ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ค ์ ๋ต์ ์ทจํ๋๋๋ค.
1. + ์ฐ์ฐ์: "๋ฌธ์์ด์ด ์ฐ์ ์ด์ผ"
+ ์ฐ์ฐ์๋ ๋ง์ ๋ ํ์ง๋ง ๋ฌธ์์ด์ ์ด์ด ๋ถ์ด๋(์ฐ๊ฒฐ) ์ญํ ๋ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ์ค ํ๋๋ผ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด, ๋๋จธ์ง ํ๋๋ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ฐ์ ์ผ๋ก ํ๋ค.
- 1 + "1" → 1์ ๋ฌธ์์ด "1"๋ก ๋ณํ → "1" + "1" = "11"
- true + "1" → true๋ฅผ ๋ฌธ์์ด "true"๋ก ๋ณํ → "true" + "1" = "true1"
2. -, *, / ์ฐ์ฐ์: "์ซ์๊ฐ ์ฐ์ ์ด์ผ" (์์๋ ๊ฐ์กฐํ์ง๋ง...)
์ด ์ฐ์ฐ์๋ค์ ์ค์ง ์ํ์ ๊ณ์ฐ๋ง์ ์ํด ์กด์ฌํ๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด์ด ์์ฌ ์์ด๋ ์ผ๋จ ์ซ์๋ก ๋ณํํ๋ ค๊ณ ์๋ํ๋ค.
- "5" * 2 → "5"๋ฅผ ์ซ์ 5๋ก ๋ณํ → 5 * 2 = 10
- "10" - 5 → "10"์ ์ซ์ 10์ผ๋ก ๋ณํ → 10 - 5 = 5
3. ๋ ผ๋ฆฌ ํ๊ฐ (if, &&, ||): "์ฐธ์ธ์ง ๊ฑฐ์ง์ธ์ง๊ฐ ์ค์ํด"
if ๋ฌธ์ด๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&, ||) ์์์๋ ๋ฐ์ดํฐ์ ๊ฐ์ด '์ฐธ ๊ฐ์ ๊ฐ(Truthy)'์ธ์ง '๊ฑฐ์ง ๊ฐ์ ๊ฐ(Falsy)'์ธ์ง๊ฐ ์ค์ํ๋ค. ๊ทธ๋์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฐ(Boolean) ํ์ ์ผ๋ก ํ๊ฐํ๋ค.
- Falsyํ ๊ฐ (๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋๋ ๊ฒ๋ค): 0, "" (๋น ๋ฌธ์์ด), null, undefined, NaN, false
- Truthyํ ๊ฐ: ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ ๋ถ (์ฌ์ง์ด "0" ๊ฐ์ ๋ฌธ์์ด๋ ์ฐธ)

์ ์๋ฌต์ ํ๋ณํ์ ์กฐ์ฌํด์ผ ํ ๊น?
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋๋ํ๊ฒ ๋ณํํด์ฃผ์ง๋ง, ๋๋ก๋ ๊ฐ๋ฐ์์ ์์์ ๋ฒ์ด๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋.
- [] + 1์ ๊ฒฐ๊ณผ๋ ๋ฌด์์ผ๊น์? ๋ฐฐ์ด์ ๋น์ฐ๋ฉด ""(๋น ๋ฌธ์์ด)์ด ๋์ด "1"์ด ๋จ.
- null + 1์ ์ด๋ป๊ฒ ๋ ๊น์? null์ 0์ผ๋ก ๋ณํํ์ฌ 1์ด ๋จ
์๋ฌต์ ํ๋ณํ์ ํธ๋ฆฌํ์ง๋ง, "๋ด๊ฐ ์๋ํ์ง ์์ ๊ฒฐ๊ณผ"๋ฅผ ๋ณ์ ์ํ์ด ํผ
๊ทธ๋์ ์ฝ๋์ ์์ ์ฑ์ ์ํด์๋ ์ต๋ํ Number(), String() ๋ฑ์ ์ฌ์ฉํด ๋ช ์์ ์ผ๋ก ํ์ ์ ๋ณํํ๋ ๊ฒ์ด ์ข๋ค.
<1 + "1"์ด "11"์ธ ์ด์ >
์๋ฐ์คํฌ๋ฆฝํธ์์ + ์ฐ์ฐ์๋ ๋ ๊ฐ์ง ์๋ฏธ๊ฐ ์๋ค.
- ์ซ์ ๋ํ๊ธฐ: $1 + 2 = 3$
- ๋ฌธ์์ด ์ฐ๊ฒฐ: "์๋ " + "ํ์ธ์" = "์๋ ํ์ธ์"
๊ทธ๋ฐ๋ฐ +์ ํ์ชฝ์ด๋ผ๋ ๋ฌธ์์ด(String)์ด ์์ผ๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ํ์ชฝ๋ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ "์ฐ๊ฒฐ"ํด ๋ฒ๋ฆผ
- "1"์ ๋ฌธ์์ด์ด๋ฏ๋ก, ์์ ์๋ 1๋ ๋ฌธ์์ด "1"๋ก ๋ฐ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก "1" + "1"์ด ๋์ด "11"์ด ๋๋ค.
< "5" * 2๊ฐ 10์ธ ์ด์ >
*(๊ณฑํ๊ธฐ), -(๋นผ๊ธฐ), /(๋๋๊ธฐ) ์ฐ์ฐ์๋ ์ค์ง ์ซ์ ๊ณ์ฐ์ ์ํด์๋ง ์กด์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด "5"๊ฐ ์์ฌ ์์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ "์, ์ด๊ฑด ๊ณฑํ๊ธฐ๋ฅผ ํด์ผ ํ๋๊น ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ์ผ๊ฒ ๋ค!"๋ผ๊ณ ํ๋จ
- "5"๋ฅผ ์ซ์ 5๋ก ์๋ ๋ณํ
- $5 \times 2 = 10$
< true + 1์ด 2์ธ ์ด์ >
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ถ๋ฆฐ(Boolean) ํ์ ์ ์ซ์์ ๊ณ์ฐ๋ ๋ true๋ 1๋ก, false๋ 0์ผ๋ก ๋ณํ๋๋ ์ฝ์
- true๋ 1๋ก ๋ฐ๊ฟ๋ค.
- $1 + 1 = 2$๊ฐ ๋จ
ํ๋์ ์ ๋ฆฌํ๋ ๊ท์น
| ์ํฉ | ๋ณํ ๋ฐฉ์ | ์ด์ |
| + ์ฐ์ฐ์ | ๋ฌธ์์ด ์ฐ์ | ๋ฌธ์์ด๊ณผ ๋ง๋๋ฉด ๋ฌด์กฐ๊ฑด '์ฐ๊ฒฐ' |
| *, -, / | ์ซ์ ์ฐ์ | ๊ณ์ฐ์ ํ๋ ค๋ฉด ๋ฌด์กฐ๊ฑด '์ซ์'์ฌ์ผ ํจ |
| true | 1๋ก ๋ณํ | ๋ถ๋ฆฐ์ด ์ซ์์ ๊ณ์ฐ๋ ๋์ ์ฝ์ |
์ฒ์์ ๋นํฉ์ค๋ฝ๊ฒ ์ง๋ง, ์ด๋ "์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ์๋ฌ๋ฅผ ๋ด์ง ์๊ณ ์ต๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๊ฒ ๋ค"๋
์๋ฐ์คํฌ๋ฆฝํธ์ ์ฒ ํ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์ด๋ฐ ์๋ฌต์ ํ๋ณํ์ ์ฝ๋๊ฐ ์ปค์ง๋ฉด ๋ฒ๊ทธ์ ์์ธ์ด ๋๊ธฐ๋ ํ๋ค๊ณ ,
๊ทธ๋์ ์ค๋ฌด์์๋ ๋ณดํต Number("5") * 2์ฒ๋ผ ๋ช ์์ ์ผ๋ก ํ์ ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ ๊ถ์ฅํ๋ค๊ณ ํ๋ค.
