- ์๋ ์ง๋ฌธ์ ๋ํ ๋๋ต ์ ๋ฆฌํ๊ธฐ
- ๊ฐ ์ง๋ฌธ์ ๋ํ ๋๋ ์ ๋ ํฌํจํ๊ธฐ
- ์ด๋์ ์ธ ์ ์์์ง
- ์ด๋ค ํน์ง์ด ์ด๋ฌ์ด๋ฌํ ๊ฒ ๊ฐ๋ค ๋ฑ
- bit๋ binary digit๋ก ์ปดํจํฐ์์ ๋ฐ์ดํฐ์ ๊ฐ์ฅ ์์ ๋จ์์ด๋ค. 0๊ณผ 1์ ์ฌ์ฉํ์ฌ 2์ง๋ฒ์ผ๋ก ํํํ๋ค.
- ๋นํธ ์ฐ์ฐ์๋ Bitwise operators๋ผ๊ณ ํ๋ฉฐ ๋นํธ๋ฅผ ์กฐ์ํ๋ ์ฐ์ฐ์๋ฅผ ์ง์นญํ๋ค.
- ๋ถํธ๊ฐ ์๋ ์ ์๋ ๊ฐ์ฅ ์ผ์ชฝ ์ฒซ ๋ฒ์งธ์ ์๋ ์ต์์ ๋นํธ๋ก ์์๋ฅผ ํํํ๋ค. 0์ ์์, 1์ ์์๋ฅผ ๋ํ๋ธ๋ค. ๋ถํธ๋ฅผ ํํํ๋ ๋นํธ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋นํธ๋ก ์ ์์ ๊ฐ์ ํํํ๋ค.
- ๊ตฌํ๋ ค๋ ์์์ ์ ๋๊ฐ์ 2์ง ํํ์ ๊ตฌํ ํ ์ด ์ซ์์ ๋ํด 1์ ๋ณด์๋ฅผ ๊ตฌํ๋ค. 1์ ๋ณด์๋ 1์ 0์ผ๋ก, 0์ 1๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.
- ์์ ๊ฒฐ๊ณผ์ 1์ ๋ํ๋ค.
- ์๋ฅผ ๋ค์ด 6๋นํธ๋ก -18์ ํํํด๋ณด์.
- -18์ 2์ง ํํ์ ๊ตฌํ๊ธฐ ์ํด ์ ๋๊ฐ 18์ 2์ง ํํ์ธ 010010์ 1์ ๋ณด์๋ฅผ ๊ตฌํ๋ค.
- 010010์ 1์ ๋ณด์๋ 101101์ด๋ค.
- 101101์ 1์ ๋ํ 101110์ด -18์ 6๋นํธ ์ ์ ํํ์ด๋ค.
~a์ ๊ฐ์ด ํธ๋ฐ(~)๋ฅผ ์ฌ์ฉํ๋ฉฐ, ํผ์ฐ์ฐ์์ 1์ ๋ณด์๋ฅผ ๋ฐํํ๋ค. ์ฆ, ๋นํธ๋ฅผ ๋ค์ง๋๋ค.~010010 => 101101
a & b์ฒ๋ผ ์ฐํผ์๋(&)๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ๋ ํผ์ฐ์ฐ์์ ๋์๋๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๋ฉด 1์ ๋ฐํํ๊ณ , ์๋๋ฉด 0์ ๋ฐํํ๋ค.
1010 & 1001 => 1000
a | b์ ๊ฐ์ด ํ์ดํ(|)์ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ๋ ์ฐ์ฐ์์ ๋์๋๋ ๋นํธ ์ค ํ๋๋ผ๋ 1์ด๋ฉด 1์ ๋ฐํํ๊ณ , ์๋๋ฉด 0์ ๋ฐํํ๋ค.
1010 | 1001 => 1011
a ^ b์ ๊ฐ์ด ์บ๋ฟ(^)์ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ๋ ์ฐ์ฐ์์ ๋์๋๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅผ ๋ 1์ ๋ฐํ, ๊ทธ ์ธ์๋ 0์ ๋ฐํํ๋ค.
1010 ^ 1001 => 0011
a << b์ ๊ฐ์ด <<๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ์ขํญ์ ๋ชจ๋ ๋นํธ๋ฅผ ์ฐํญ์ ์ซ์๋งํผ ์ผ์ชฝ์ผ๋ก ์์ง์ด๊ณ , ์ค๋ฅธ์ชฝ์ 0์ผ๋ก ์ฑ์ด๋ค. ๋ถํธ๋ ์ ์งํ๋ค.
1010 << 2 => 101000
a >> b์ ๊ฐ์ด >>๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ์ขํญ์ ๋ชจ๋ ๋นํธ๋ฅผ ์ฐํญ์ ์ซ์๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๊ณ , ๋ถํธ๋ ์ ์งํ๋ค. ์ผ์ชฝ์ ๋ถํธ ๋นํธ๋ก ์ฑ์ฐ๊ณ ์ค๋ฅธ์ชฝ ๋จ๋ ๋นํธ๋ ๋ฒ๋ฆฐ๋ค.
11010 >> 2 => 11110
a >>> b์ ๊ฐ์ด >>>๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ทจํ๋ค.- ์ขํญ์ ๋ชจ๋ ๋นํธ๋ฅผ ์ฐํญ์ ์ซ์๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๊ณ , ์ผ์ชฝ์ 0์ผ๋ก ์ฑ์ด๋ค. ์ค๋ฅธ์ชฝ ๋จ๋ ๋นํธ๋ ๋ฒ๋ฆฐ๋ค.
11010 >>> 2 => 00110
- ์ด๋์ ์ด๋ค ์ฉ๋๋ก ์ฌ์ฉํ ์ ์๋์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ปดํจํฐ ๋ด๋ถ์์ ์ด๋ฃจ์ด์ง๋ ์ ์ ์ฐ์ฐ ๋ฐฉ๋ฒ์ ์ดํดํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
- 10์ 2๋ก ๋๋ ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค.
- 1์์ ๊ตฌํ ๋๋จธ์ง๋ฅผ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ unshift ํ๋ค.
- 1์์ ๊ตฌํ ๋ชซ์ผ๋ก 1, 2๋ฒ์ ๋ฐ๋ณตํ๋ค.
- ๋ชซ์ด 2๋ณด๋ค ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
- 2๋ณด๋ค ์์์ง ๋ง์ง๋ง ๋ชซ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ง์ง๋ง์ผ๋ก unshift ํ๋ค.
- ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์์๋๋ก ์ถ๋ ฅํ๋ค.
10์ง ํํ์ 2์ง ํํ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์๊ฒ ๋๊ณ ์ฝ๋๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ๋ ๋ช ํํ๊ฒ ์๊ฒ ๋์๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ก ๋์ค๋ฉด ๊ธ๋ฐฉ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ hoisting์ด๋ ๋ณ์์ ํจ์์ ์ ์ธ์ด ๊ทธ๋ค์ด ํฌํจ๋ scope์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ๊ฒ์ ์๋ฏธํ๋ค.
- scope๋ ์ ์ญ(global) ๋๋ ์ง์ญ(local) ๋ฒ์๊ฐ ์์ผ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ์์ local์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํจ์ ๋ฒ์๋ฅผ ๋งํ๋ค.
- ๋ณ์๋ ์๋ณ์์ ์ ์ธ๋ง ํธ์ด์คํ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ํ ๋น ๊ตฌ๋ฌธ ์ด์ ์ ๋ณ์์ ์ ๊ทผํ๊ฒ ๋๋ฉด var๋ก ์ ์ธ๋ ๋ณ์์ ๊ฒฝ์ฐ undefined ๊ฐ์ ๊ฐ๊ณ ์๋ค.
- let ๋๋ const๋ก ์ ์ธ๋ ๋ณ์ ๋ํ ํธ์ด์คํ ๋๋, var์๋ ๋ค๋ฅด๊ฒ ๊ฐ ์ ์ธ ๊ตฌ๋ฌธ ์ด์ ์ ๋ณ์์ ์ ๊ทผํ๊ฒ ๋๋ฉด ReferenceError๋ฅผ, ์ ์ธ ํ ํ ๋น ์ ์ ์ ๊ทผํ๊ฒ ๋๋ฉด undefined ๊ฐ์ ์ถ๋ ฅํ๋ค.
- ํจ์ ์ ์ธ์์ ๊ฒฝ์ฐ ํจ์ ์ ์ฒด๊ฐ ํธ์ด์คํ ๋๋ฉฐ, ํจ์ ํํ์์ ๋ณ์ ํธ์ด์คํ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ์๋ฅผ ํ ๋นํ๋ ค๋ ๋ณ์์ ์๋ณ์๋ง ํธ์ด์คํ ๋๋ค.
- ์์ ๊ฐ์ ์ด์ ๋ก ํจ์ ํํ์์ผ๋ก ์ ์ธ๋ ํจ์(ํนํ var)๋ฅผ ํจ์ ํ ๋น ์ด์ ์ ํธ์ถํ๊ฒ ๋๋ฉด ํจ์๊ฐ ์๋๋ผ๋ TypeError๊ฐ ์ถ๋ ฅ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์์ ํจ์๊ฐ ํธ์ด์คํ ๋๋ ํน์ง์ ๋ณ์์ ํจ์๊ฐ ์ด๋์ ์ ์ธ๋๋ ์๊ด์์ด ์ ๊ทผํ๊ณ ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ๋ ์์ง๋ง, ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ต๊ฒ ํ๊ณ ์ ์ฌ์ ์ค๋ฅ์ ๊ฐ๋ฅ์ฑ์ ๋์ธ๋ค๋ ๋จ์ ๋ ์๋ค. ๊ทธ๋์ ํจ์ ํํ์์ ํฌํจํ ๋ณ์๋ ์ต๋ํ ์ ์ธ๊ณผ ์ด๊ธฐํ ํ์ ์ ๊ทผ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ณ์์ ํจ์์ ๋ด๋ถ ๋์ ๋ฐฉ์์ ์ด๋ ์ ๋ ์ดํดํ ์ ์๊ฒ ๋์๊ณ ์ ๋ณ์๋ฅผ ์ ์ธ, ์ด๊ธฐํ ํ ํ ์ฌ์ฉํด์ผ ํ๋์ง, ํจ์ ์ ์ธ์๊ณผ ํํ์์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง์ ๋ํด์๋ ์ ์ ์๊ฒ ๋์๋ค. ์ด๋ฅผ ํตํด ์ ์ฌ์ ์ค๋ฅ๋ฅผ ์ข ๋ ์ฝ๊ฒ ์ก์๋ผ ์ ์์ ๊ฒ ๊ฐ๋ค.
!!(double exclamation)์ ๋ ผ๋ฆฌ์ฐ์ฐ์ NOT(!)์ ๋ ๋ฒ ์ด ๊ฒ์ผ๋ก, boolean type์ด ์๋ ๊ฐ์ boolean type์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ๊ณผ๊ฐ ์๋ค.- Boolean data type์ด๋ true ๋๋ false์ ๋ ๊ฐ์ง ๊ฐ๋ง ๊ฐ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ค.
- ์ด๋ค ๊ฐ์ ๋
ผ๋ฆฌ์ฐ์ฐ์ NOT์ ์ ์ฉํ๋ฉด ๊ทธ ๊ฐ์ ๋ฐ๋๋๋ boolean ๊ฐ์ ์ป์ ์ ์์ง๋ง,
!๋ฅผ ๋ ๋ฒ ์ ์ฉํ๊ฒ ๋๋ฉด ํ ๋ฒ ๋ NOT์ด ๋๋ฏ๋ก ์๋ ๊ฐ์ boolean ๊ฐ์ ์ป์ ์ ์๋ ๊ฒ์ด๋ค.!5 === false!!5 === true
- ์ฆ,
!!value๋Boolean(value)์ ๊ฐ์ ํจ๊ณผ๊ฐ ์๋ค.!!5 === Boolean(5)
!์ ์์ฃผ ์ผ์์ง๋ง !!์ ์ฌ์ค ์ฒ์ ๋ดค๋๋ฐ ์ด๋ค ๊ฐ์ boolean ๊ฐ์ ์ป๊ณ ์ถ์ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
5. 3๊ฐ ์ด์์ switch ๋ฌธ์ ์ด๋ป๊ฒ 3ํญ ์ฐ์ฐ์๋ก ๋์ฒดํ ์ ์์๊น? ์ฝ๋๋ก ์์๋ฅผ ๋ค๋ผ.
์ผํญ ์ฐ์ฐ์๋ conditional operator ๋๋ ternary operator๋ผ๊ณ ํ๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฐ์ฐ์ ์ค ์ ์ผํ๊ฒ 3๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ๊ฐ๋๋ค.
๋ค์๊ณผ ๊ฐ์ 3๊ฐ ์ด์์ case๋ฅผ ๊ฐ๋ switch ๋ฌธ์ด ์๋ค๊ณ ํ์.
const value = 4;
switch (value) {
case 1:
console.log('one');
break;
case 2:
console.log('two');
break;
case 3:
console.log('three');
break;
default:
console.log('nothing');
}value ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์์ ์ธ๋ฐ, ์ด ์ฝ๋๋ฅผ ์ผํญ ์ฐ์ฐ์๋ก ๋ฐ๊พธ์ด ๋๊ฐ์ด ๋์ํ๋๋ก ๋ง๋ค ์ ์๋ค. ์ผํญ ์ฐ์ฐ์๋ก ๋ฐ๊พผ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
const value = 4;
value === 1 ? console.log('one')
: value === 2 ? console.log('two')
: value === 3 ? console.log('three')
: console.log('nothing');3๊ฐ์ง case์ผ ๋ ๋ฟ๋ง ์๋๋ผ ๊ทธ ์ด์์ case๊ฐ ์์ด๋ ์์ ๊ฐ์ด ์ผํญ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
2๊ฐ์ ์ผ์ด์ค๊ฐ ์์ ๋๋ง ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์๋๋ฐ 3๊ฐ ์ด์์ ์ผ์ด์ค์์๋ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฑธ ์๋ก ์๊ฒ ๋๋ค. ๋, if-else ๋ฌธ ๋ฟ๋ง ์๋๋ผ switch ๋ฌธ๋ ์ผํญ ์ฐ์ฐ์๋ก ๋ฐ๊ฟ ์ธ ์ ์์์ ์ ์ ์์๋ค. ์ฝ๋ ์์ฑ ์ค ์ ํฉํ ๊ฒฝ์ฐ์ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ ์ด์ฉํ๋ฉด ๋์ฑ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ ๊ฐ๋ค.
==๋ Double equals๋ก ๋์จํ ๊ฐ์(abstract comparison)์ ๋น๊ตํ๋ค.==๋ ๋น๊ตํ๋ ค๋ ๋ ๊ฐ์ด type์ด ๋ค๋ฅด๋ฉด ๋น๊ต ๊ฐ๋ฅํ ๊ฐ์ type์ผ๋ก ๊ฐ์ ํ ๋ณํ์ ํ ํ ์๊ฒฉํ ๋น๊ต๋ฅผ ํ๋ค.===๋ Triple equals๋ก ์๊ฒฉํ ๊ฐ์(strict comparison)์ ๋น๊ตํ๋ค.===๋ ๋น๊ตํ๋ ค๋ ๋ ๊ฐ์ type๊ณผ value๊ฐ ๋ชจ๋ ๊ฐ์ ๋ true๋ฅผ ๋ฐํํ๋ค.
- 0๊ณผ ''(๋น ๋ฌธ์์ด)์ false์ ๊ฐ๋ค.
0 == false'' == false
- null๊ณผ undefined๋ ์๋ก ๊ฐ์ง๋ง ๋ค๋ฅธ ๊ฒ๋ค๊ณผ๋ ๊ฐ์ง ์๋ค.
null == undefined
- NaN์ ์๊ธฐ ์์ ์ธ NaN์ ํฌํจํ์ฌ ๊ทธ ์ด๋ค ๊ฒ๊ณผ๋ ๊ฐ์ง ์๋ค.
- Infinity๋ true์ฒ๋ผ ์ฌ์ฉ๋์ง๋ง true๋ false์ ๋น๊ตํ ์ ์๋ค.
- ๋น ๋ฐฐ์ด []์ true์ฒ๋ผ ์ฌ์ฉ๋์ง๋ง 0, '', false์ ๋น๊ตํ๋ฉด ๊ฐ๋ค.
[] == 0[] == ''[] == false
- NaN์ ์๊ธฐ ์์ ์ธ NaN๊ณผ๋ ๋น๊ตํ ์ ์๋ค.
==์ด ๊ฐ์ ๋น๊ตํ๊ธฐ ์ ์ ๊ฐ์ ๋ก ํ ๋ณํ์ ํ๋ค๋ ์ฌ์ค์ ์๋ก ์๊ฒ ๋์๊ณ ==์ ์์ธกํ๊ธฐ ์ด๋ ค์ด ์์ธ์ํฉ์ด ๋ง๋ค๋ ๊ฒ๋ ์๊ฒ ๋์๋ค. ์ฌ๋งํ๋ฉด ===์ ์ฐ๋ผ๋ ๋ง๋ง ๋ค์์ง ์ ๊ทธ๋ฐ์ง ์ ํํ ์ดํดํ์ง ๋ชปํ๋๋ฐ ์ด๋ฒ์ ์์๋ณด๋ฉด์ ์ด์ ๋ฅผ ์ฒด๊ฐํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ์์ผ๋ก ์ต๋ํ ===๋ง ์ธ ์ ์๋๋ก ํ๊ณ , ์ด์ฉ ์ ์์ด ==์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ด ์ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ์คํ ํ์ธํ ํ ์ฌ์ฉํด์ผ๊ฒ ๋ค.
||์ Logical OR๋ผ๊ณ ํ๋ฉฐ ๋ ผ๋ฆฌ์ฐ์ฐ์ ์ค ํ๋๋ก, ๋น๊ตํ๋ ๋ ๊ฐ์ ํผ์ฐ์ฐ์ ์ค ํ๋๋ง true์ฌ๋ true๋ฅผ ๋ฐํํ๊ณ ๋ชจ๋ false์ด๋ฉด false๋ฅผ ๋ฐํํ๋ค.const value = a || b;๋ ์์ ๊ฐ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ณ์ ์ด๊ธฐ๊ฐ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ด๋ค. a์ b๊ฐ boolean ํ์ ์ ๋ณ์๋ผ๋ฉด ์๋ ์๋ ๋ฐฉ์๋๋ก true๋ false๋ฅผ ๋ฐํํ๊ฒ ์ง๋ง, boolean์ด ์๋ ํ๊ฐํ ์ ์๋ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.- true๋ก ํ๊ฐํ ์ ์๋ ๊ฐ์ด ์๋ค๋ฉด true๋ก ํ๊ฐํ ์ ์๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
undefined || 1์ 1์ ๋ฐํtrue || 2๋ true์ ๋ฐํ
- ๋ชจ๋ ๊ฐ์ด false๋ก ํ๊ฐ๋๋ค๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ์ ๋ฐํํ๋ค.
null || 0์ 0์ ๋ฐํ
- true๋ก ํ๊ฐํ ์ ์๋ ๊ฐ์ด ์๋ค๋ฉด true๋ก ํ๊ฐํ ์ ์๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
- a์ b์ ์๋ฆฌ์๋ ๋ณ์๋ฟ๋ง ์๋๋ผ ํจ์๋ ์์๊ณผ ๊ฐ์ ํํ๋ ์ธ ์ ์๊ณ , ๋ฐํ ๊ฐ์ ํตํด ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๊ฐ๋๋ค. ๋ํ ๊ฐ์ฒด๋ ํญ์ true๋ก ํ๊ฐ๋๋ค.
(x = 0) || (x = 1)๋x = 1์ ๊ฒฐ๊ณผ์ธ 1์ ๋ฐํ
- ๋
ผ๋ฆฌ์ฐ์ฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ ์ง์ ์ ์์ ๋ ํ๊ฐ๋ฅผ ๋ฉ์ถ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฐํํ๋ '๋จ์ถ ํ๊ฐ(Short-circuit evaluation)'๋ฅผ ์ํํ๋ค.
||์ ํผ์ฐ์ฐ์ ์ค ํ๋๋ง true์ฌ๋ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true์ด๊ธฐ ๋๋ฌธ์, ์ผ์ชฝ๋ถํฐ ํ๊ฐ๋ฅผ ์์ํด์ true๋ก ํ๊ฐ๋๋ ํผ์ฐ์ฐ์๋ฅผ ๋ง๋๋ฉด ๋์ด์ ์งํํ์ง ์๊ณ true๋ก ํ๊ฐ๋ฅผ ์ข ๋ฃํ๋ค.true || (x = 1)๋ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ true์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์ธ์์ธx = 1์ ์ํํ์ง ์๊ณ ๋ฐ๋ก true๋ฅผ ๋ฐํํ๋ค. ๋ฐ๋ผ์ ๋ณ์ x์๋ 1์ด ํ ๋น๋์ง ์๋๋ค.
๋
ผ๋ฆฌ์ฐ์ฐ์ ||์ ์ข
์ข
์ฌ์ฉํ๋ ๊ฒ์ด์๋๋ฐ ์ข ๋ ๋ช
ํํ๊ฒ ์๋ ๋ฐฉ์์ ์๊ฒ ๋์๊ณ , ๋จ์ถ ํ๊ฐ๋ฅผ ์ํํ์ฌ ์๊ฐ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋์ํ๊ณ ์๋ค๋๊ฑธ ์๊ฒ ๋์๋ค. ์ฌ์ฉํ๋ ค๋ ์ด๋ค ๊ฐ์ ๋จ์ํ ์ ํจ์ฑ ๊ฒ์ฌ์ ํ ๋น์ ์ ์ฉํ ๊ฒ ๊ฐ๊ณ ๊ฐ๋จํ if ๋ฌธ์ ๋์ ํด์ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
- eval()์ ๋ฌธ์์ด๋ก ๋ ์ฝ๋๋ฅผ ํ๊ฐํ๊ณ ์ํํ ํ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ํจ์์ด๋ค.
eval('2 + 2') === 4
eval ํจ์๋ ๋์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ํธ๋ฆฌํ๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ด์ง๋ง ์๋์ ๊ฐ์ ์ฌ๋ฌ ๋จ์ ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ฌ์ฉ์ ํผํ๋ ๊ฒ ์ข๋ค.
- eval ํจ์๋ eval์ด ์ ๊ทผํ ์ ์๋ scope๋ด์ ๋ณ์๋ค์ ๋๋ฌด ์ฝ๊ฒ ๋ณ๊ฒฝ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ์์ธก์ ์ด๋ ต๊ฒ ํ๋ค.
- ๋๋ฒ๊น ์ด ์ด๋ ต๋ค. (evalํจ์๋ก ์ฌ์ฉ๋๋ ์ฝ๋๋ ์ค๋ฒํธ๊ฐ ์๋ค.)
- eval ํจ์๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ต์ ํ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋๋ฆฌ๋ค.
- eval ํจ์ ์ฌ์ฉ์ด ๋ณด์์ ์ทจ์ฝํ๊ฒ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ด ์๋ค. (์ฌ์ฉ์ ์ ๋ ฅ์ ๊ดํ ๋ณด์ ์ด์๊ฐ ์๋ค.)
-
๋์ ์ผ๋ก ๊ฐ์ฒด ์์ฑ์ ์ ๊ทผํ ๋ ์์ฑ ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ๊ธฐ
eval( 'var result = obj.' + propName );๋์var result = obj[ propName ]; -
์งง์ ์ฝ๋๋ฅผ ํ๊ฐํ๊ณ ์ํํ ๋ ํจ์ ์์ฑ์ ๋๋ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ
-
eval ๋์ ํจ์ ์์ฑ์ ์ฌ์ฉ
function looseJsonParse(obj){ return eval(obj); } console.log(looseJsonParse( "{a:(4-1), b:function(){}, c:new Date()}" ))
function looseJsonParse(obj){ return Function('"use strict";return (' + obj + ')')(); } console.log(looseJsonParse( "{a:(4-1), b:function(){}, c:new Date()}" ))
-
๋ฌธ์์ด ๋์ ํจ์ ์ฌ์ฉ
setTimeout(" ... ", 1000);๋์setTimeout(function() { ... }, 1000);
-
-
JSON ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ JSON.parse๋ฅผ ์ด์ฉํ๊ธฐ
eval ํจ์๋ ์ด๋ฒ์ ์ฒ์ ์๊ฒ ๋๋๋ฐ ์ด๋ค ์ํฉ์ ์ด๋ค ๋ฐฉ์์ผ๋ก ํธ๋ฆฌํ๊ฒ ์ธ ์ ์๋์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๋จ์ ์ด ๋ง์ ํจ์์ธ ๊ฒ ๊ฐ์์ ํน์ ์ฌ์ฉํ ์ผ์ด ์์ด๋ ์ต๋ํ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ํ์ง๋ง eval ํจ์๊ฐ ๊ณผ๊ฑฐ์ ํ์ (?)์ผ๋ก ์๊ฐ๋ณด๋ค ๋ง์ ๊ณณ์ ์ฌ์ฉ๋ผ์๋ค๊ณ ํ๋, ์ด๋ฒ ๊ณต๋ถ๊ฐ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ํด์ํ๊ฑฐ๋ ์์ ํด์ผ ํ ์ผ์ด ์๊ฒผ์ ๋ ์ ์ฉํ ๊ฒ ๊ฐ๋ค.
9. ๋ณ์๊ฐ์ ์ถ๋ ฅํ ๋ null, undefined, is not defined๋ก ์ถ๋ ฅ๋๋ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
null ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ๊ฐ์ฒด ๊ฐ์ '์๋์ ์ธ ์์'์ ๋ํ๋ด๋ ๊ฐ์ด๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ง ๋ณ์์ ์ ๊ทผํ์ ๋ null ์ด ์ถ๋ ฅ๋๋ค.
-
๊ณ ์๋ก ๋ณ์์ ๊ฐ์ด '์์'์ ํํํ๊ธฐ ์ํด ๋ณ์์ ์ง์
null์ ํ ๋นํ์ ๋let value = null; // value is null
-
ํน์ ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฐ์ฒด์ ๊ฐ์ ์ฐพ์ง ๋ชปํ์ ๋ ๋ฐํ
let value = 'abc'.match(/[0-9]/); // value is null let saveButton = document.getElementById("save"); // saveButton is null
undefined ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ด ํ ๋น๋์ง ์์ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ง์ ๊ฒฝ์ฐ์ undefined ๊ฐ ์ถ๋ ฅ๋๋๋ฐ ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ undefined ๊ฐ ์ถ๋ ฅ๋๋ค.
-
์ ์ธ๋ง ๋๊ณ ์์ง ์ด๊ธฐ๊ฐ์ด ํ ๋น๋์ง ์์ ๋ณ์์ ์ ๊ทผํ์ ๋
let value; console.log(value); // value is undefined
-
ํจ์์ ์ ์๋ ๋งค๊ฐ๋ณ์์ ์ธ์๊ฐ ๋ค์ด์ค์ง ์๋ ๊ฒฝ์ฐ
function sum(val1, val2) { return val1 + val2; // val2 is undefined } sum(5);
-
ํจ์์์ ์ด๋ค ๊ฐ๋ ๋ฐํํ์ง ์๋ ๊ฒฝ์ฐ
function sum(val1, val2) { let result = val1 + val2; } let result = sum(5, 5); // result is undefined
"x" is not defined ๋ ReferenceError ํ์
์ ํ๋๋ก ์ ์ฒด ์๋ฌ ๋ฉ์ธ์ง๋ ReferenceError: "x" is not defined ์ด๋ค. ์กด์ฌํ์ง ์๋ ๋ณ์๋ฅผ ์ด๋๊ฐ์์ ์ฐธ์กฐํ์ ๋ ๋ํ๋๋ ์๋ฌ ๋ฉ์ธ์ง์ด๋ค. ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ด ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
-
๋ณ์๊ฐ ์ ์ธ๋์ง ์์์ ๋
console.log(value); // ReferenceError: value is not defined let value;
-
์๋ชป๋ scope์์ ์ ๊ทผํ์ ๋
function numbers() { let num = 1; return num; } console.log(num); // ReferenceError: num is not defined.
null ๊ณผ undefined ์ ๋ํด์ ๋ช
ํํ ์๊ฒ ๋์๊ณ , ์ด๋จ ๋ is not defined ๋ผ๋ ์๋ฌ๋ฅผ ๋ง์ฃผ์น๋์ง๋ ์๊ฒ ๋์ด์ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ฉฐ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ์ข ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ๋ค. ๋, ๋ณ์๋ฅผ ์ ์ธํ ํ ์ต๋ํ ์ด๊ธฐ๊ฐ์ ํ ๋นํ๊ณ ์ฌ์ฉํ๋ ๊ฒ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํฌ ํ๋ฅ ์ ๋ฎ์ถฐ์ค ์ ์์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
-
add ํจ์๋ '๋ค์ ์ธ์๋ฅผ ๋ฐ๋ ํจ์'๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
-
add ํจ์์์ ๋ฐํ๋๋ ํจ์๋ ์ ๋ ฅ๋ฐ์ 2๊ฐ์ ์ธ์๋ฅผ ๊ณ์ฐํ๊ณ ๋ฐํํ๋ค.
-
์์ ๋ด์ฉ์ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
function add(num1) { return function (num2) { return num1 + num2; } } const result = add(10)(2); // result is 12
์ด์ฒ๋ผ add ํจ์์์ ๋ฐํ๋ ์ต๋ช ํจ์์์ ์ง์ญ scope๋ฅผ ๋ฒ์ด๋ ๋ณ์ num1์ ์ ๊ทผํ๊ณ ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ closure ๊ฐ๋ ๋๋ฌธ์ด๋ค. closure๋, ์ด๋ค ํจ์๊ฐ ์์ฑ๋๋ ์์ ์ ์กด์ฌํ๋ execution context์ lexical environment๋ฅผ ํฌํจํ๋ ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ํ๊ฒฝ์ ๋ปํ๋ค.
-
์์ ์ฝ๋๋ฅผ arrow function์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๊ฒฐํ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
const add = num1 => num2 => num1 + num2; const result = add(10)(2); // result is 12
์ด๋ฒ ์ง๋ฌธ์ ์ด๋ฏธ ์์ ์ pipe ํจ์๋ฅผ ํตํด ํจ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์ฐ์ตํด ๋ณธ ์ ์ด ์์ด์ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๋ค. ํ์ง๋ง closure๋ ์ฌ๋ฌ ๋ฒ ๋ณธ ๊ฐ๋ ์์๋ ๋ถ๊ตฌํ๊ณ ์๋ ๊ฒ ๊ฐ์์ง๋ง ์งง๊ณ ๋ช ํํ๊ฒ ์ค๋ช ํ๊ธฐ๊ฐ ์ด๋ ต๋ค๊ณ ๋๊ผ๋ค. closure์ ๊ด๋ จ ์๋ ๊ฐ๋ ๋ค์ ๋ํด ๊ธฐํ๊ฐ ๋ ๋ ์ข ๋ ์์ธํ ๊ณต๋ถํด๋ณด๊ณ ์ถ๋ค.
11. ํจ์์ ์ธ์ ๊ฐ์์ ํ๋ผ๋ฏธํฐ๊ฐ ์ผ์นํ์ง ์์ผ๋ฉด ์ด๋ค ์ผ์ด ์๊ธฐ๋๊ฐ ์ค๋ช ํ๊ธฐ
- ํจ์์ ์ ์ธ๋ ํ๋ผ๋ฏธํฐ๋งํผ๋ง ์ธ์๋ฅผ ๋ฐ๊ณ ๋๋จธ์ง๋ ๋ฌด์๋๋ค.
- 'arguments' ๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ๋ ๋ชจ๋ ์ธ์์ ์ ๊ทผํ ์ ์๋ค.
- 'arguments' ๋ ๋ฐฐ์ด ๊ฐ์ ๊ตฌ์กฐ์ด์ง๋ง ๋ฐฐ์ด์ ์๋๋ฏ๋ก ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- Rest parameter๋ ๋ฐฐ์ด์ด๋ฏ๋ก 'arguments' ๋์ Rest parameter๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
- ํจ์์์ ์ ๋ ฅ๋ฐ์ ์ธ์์ ๋์๋์ง ๋ชปํ ํ๋ผ๋ฏธํฐ๋ ๊ฐ์ด undefined๋ก ํ ๋น๋๋ค.
- ๋์๋์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ์๋ ํ๋ผ๋ฏธํฐ๋ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด์ฃผ๋ ๊ฒ ์ข๋ค.
์๋ ์๊ณ ์๋ ๋ด์ฉ์ด์ง๋ง ํ์คํ๊ฒ ์ ๋ฆฌํ ์ ์์ด์ ์ข์๊ณ , ๊ฐ๋ฅํ ํจ์์ ํ๋ผ๋ฏธํฐ๋ ๋ฐ์ผ๋ ค๋ ์ธ์ ๊ฐ์์ ๋ง์ถฐ์ ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. ๋ํ, ๋ฐ์ผ๋ ค๋ ์ธ์ ๊ฐ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ arguments ๊ฐ์ฒด๋ณด๋ค๋ ES6์์ ์ถ๊ฐ๋ Rest parameter๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฉํ ๊ฒ ๊ฐ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ํญ์ ๊ฐ์ ๋ฐํํ๋ค. ๋ณดํต return ๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ์ ๋ฐํํ๋๋ฐ, return ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์๋ค.
- ํจ์ ๋ด๋ถ์์ return ๋ฌธ์ ๋ง๋๋ฉด ํจ์๋ ๋ ์ด์ ์คํ๋์ง ์๊ณ ์ข ๋ฃ๋๋ค.
- ํน์ ๊ฐ๊ณผ ํจ๊ป return ๋ฌธ์ด ์ฌ์ฉ๋๋ค๋ฉด ํจ์๋ ๊ทธ ๊ฐ์ ๋ฐํํ๋ฉฐ ์ข ๋ฃํ๋ค.
- return ๋ฌธ์ ์ด๋ค ๊ฐ๋ ์ฃผ์ด์ง์ง ์๊ณ ์ฌ์ฉ๋๋ค๋ฉด ํจ์๋ undefined๋ฅผ ๋ฐํํ๋ฉฐ ์ข ๋ฃํ๋ค.
ํจ์ ์์ return ๋ฌธ์ด ์ฌ์ฉ๋์ง ์์ ๊ฒฝ์ฐ์๋ ํจ์ ๋ด ๋ชจ๋ ๊ตฌ๋ฌธ์ด ์คํ๋ ํ undefined๋ฅผ ๋ฐํํ๋ฉฐ ์ข ๋ฃ๋๋ค.
ํจ์์ ๋ฐํ ๊ฐ์ด ์์ ๋ undefined๋ฅผ ๋ฐํํ๊ณ , ํน๋ณํ ๊ฐ ์์ด return๋ง ์ฌ์ฉํด๋ undefined๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ํจ์์์ ํน๋ณํ ๋ฐํํ ๊ฐ์ด ์๋ค๋ฉด ๊ตณ์ด return ๋ฌธ์ ์ฌ์ฉํ์ง ์์๋ ๋๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๋, ์๋ฐ์คํฌ๋ฆฝํธ์์ undefined๋ ๋ณดํต false๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํจ์์์ ์๋ฌด๋ฐ ๋ฐํ ๊ฐ์ด ์์ ๋ ์ด๊ธฐํ๋์ง ์์ ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์์ undefined๋ฅผ ๋ฐํํด์ฃผ๋ ๊ฒ ํธ๋ฆฌํ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
์ต๋ช ํจ์๋ ์์ด๋ก๋ Anonymous functions๋ผ๊ณ ํ๋ฉฐ, '์ด๋ฆ์ด ์๋ ํจ์'๋ค์ ๋งํ๋ค.
-
ํจ์ ํํ์ (Function expression)
const add = function (param1, param2) { return param1 + param2; }
-
ํ์ดํ ํจ์ (Arrow functions)
const add = (param1, param2) => param1 + param2;
-
์ฆ์ ์คํ ํจ์ (IIFE, Immediately Invoked Function Expression)
(function () { console.log('IIFE'); })();
- ์ต๋ช ํจ์๋ ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ์งง๊ณ ๊ฐ๊ฒฐํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
- ์ต๋ช ํจ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ผํ์ฑ ํจ์๋ฅผ ํํํ ๋ ์ ์ฉํ๋ค.
- ์ต๋ช ํจ์๋ ๋ณดํต ์์ฃผ ์งง๊ณ ๊ฐ๋จํ ํจ์๋, ์ฝ๋ฐฑ ํจ์, ์ฆ์ ์คํ์ํฌ ํจ์์ ์ ๋นํ๋ค.
- ์ต๋ช ํจ์๋ ํธ๋ฆฌํ์ง๋ง ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ์ด ์ด๋ ค์ธ ์ ์๋ค.
์ต๋ช ํจ์๋ฅผ ์ด๋ค ๊ฒฝ์ฐ์ ์ฐ๋ฉด ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์์ง ์๊ฒ ๋์๋ค. ํนํ ์ฆ์ ์คํ ํจ์๋ ์ฃผ๋ก ํ ๋ฒ๋ง ์คํ๋ ์ธ๋ถ ์ฝ๋(๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ์ ๊ฐ์)๋ฅผ ๊ฐ์ ธ๋ค ์ธ ๋ ์ ์ญ ๋ค์์คํ์ด์ค๋ฅผ ์ค์ผ์ํค์ง ์๊ณ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฉํ๋ค๋ ๊ฒ์ ์ ์ ์์๋ค. ๊ทธ๋ฌ๋ ์ต๋ช ํจ์๋ฅผ ์ด์ ์์ด ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฐ์ ์ ๋๋ฒ๊น ์ด ์ด๋ ค์์ง ์ ์๊ธฐ ๋๋ฌธ์ ์ฉ๋์ ๋ง๊ฒ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.