๋ณ์๋?
๊ฐ์ ์์น(์ฃผ์)๋ฅผ ๊ธฐ์ตํ๋ ์ ์ฅ์์ด๋ค. ์ฌ๊ธฐ์ ๊ฐ์ ์์น๋ ๊ฐ์ด ์์นํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์๋ฅผ ์๋ฏธํ๋ค.
์ฆ, ๋ณ์๋ ๊ฐ์ด ์์นํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ช ๋ช ํ ์๋ณ์์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ณ์์ ํ์ ์ง์ ์์ด ๊ฐ์ด ํ ๋น ๋๋ ๊ณผ์ ์์ ์๋์ผ๋ก ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋๋ค.(Type Inference) ๋ฐ๋ผ์ ๋ณ์์ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ ๊ฐ์ ์์ ๋กญ๊ฒ ํ ๋น ํ ์ ์๋ค.
๋ฐ์ดํฐ ํ์
๋ฐ์ดํฐ ํ์ (Data Type)์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ๋ฅผ ๋งํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ์ดํฐ ํ์ ์ ์์ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ผ๋ก ๋๋์ด ์ง๋ค.
์์ํ์ ( primitive data type)
- boolean
- null
- undefined
- number
- string
- symbol(ES6)
๊ฐ์ฒด ํ์ (object / reference type)
- object
์์ ํ์ (Primitive Data Type)
์์ ํ์ ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ(immutable value)์ด๋ฉฐ pass-by-value(๊ฐ์ ์ํ ์ ๋ฌ)์ด๋ค.
number
Java์ ๊ฒฝ์ฐ ์ ์์ ์ค์๋ฅผ ๊ตฌ๋ถํ์ฌ int, long, double ๋ฑ๊ณผ ๊ฐ์ด ๋ค์ํ ์ซ์ ํ์ ์ด ์กด์ฌํ์ง๋ง์๋ฐ์คํฌ๋ฆฝํธ์์๋ number ํ๋์ ์ซ์ ํ์ ๋ง ์กด์ฌํ๋ค.+) Infinity : ์์ ๋ฌดํ๋, -Infinity : ์์ ๋ฌดํ๋, NaN : ์ฐ์ ์ฐ์ฐ ๋ถ๊ฐ (not-a-number)
string
๋ฌธ์์ด ํ์ ์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค. ๋ฌธ์์ด์ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋๋ฐ ์ด์ ๊ฐ์ ํน์ฑ์ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌ๋ฐฐ์ด์ด๋ผ ํ๋ค.๊ทธ๋ ๋ค๊ณ ํด์ ๋ฐฐ์ด์ฒ๋ผ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒ์ ์๋๋ค. ์ฌํ ๋น์ ๊ฐ๋ฅํ๋ค.
boolean
๋ถ๋ฆฌ์ธ ํ์ ์ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ฐธ, ๊ฑฐ์ง์ ๋ํ๋ด๋ true์ false ๋ฟ์ด๋ค.๋น์ด์๋ ๋ฌธ์์ด๊ณผ null, undefined, ์ซ์ 0์ false๋ก ๊ฐ์ฃผ๋๋ค.
undefined
undefined ํ์ ์ ๊ฐ์ undefined๊ฐ ์ ์ผํ๋ค. ์ ์ธ ์ดํ ๊ฐ์ ํ ๋นํ์ง ์์ ๋ณ์๋ undefined๊ฐ์ ๊ฐ์ง๋ค. ์ด๋ ๋ณ์ ์ ์ธ์ ์ํด ํ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฒ์ ํ ๋น์ด ์ด๋ฃจ์ด์ง ๋ ๊น์ง ๋น ์ํ๋ก ๋ด๋ฒ๋ ค๋์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด undefined๋ก ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๊ฐ์ ํ ๋นํ์ง ์์ ๋๋ ํท๊ฐ๋ฆฌ์ง ์๊ฒ null์ ํ ๋นํ๋ค.
null
null ํ์ ์ ๊ฐ์ null์ด ์ ์ผํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ฏ๋ก null์ Null, NULL๊ณผ ๋ค๋ฅด๋ค.null์ ์๋์ ์ผ๋ก ๋ณ์์ ๊ฐ์ด ์๋ค๋๊ฒ์ ๋ช ์ ํ ๋ ์ฌ์ฉํ๋ค. ์ด๋ ๋ณ์๊ฐ ๊ธฐ์ตํ๋ ๋ฉ๋ชจ๋ฆฌ ์ด๋๋ ์ค์ ์ฐธ์กฐ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋๊ตฌ๋ ์ฐธ์กฐํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํด ๊ฐ๋น์ง ์ฝ๋ ์ ์ ์ํํ ๊ฒ์ด๋ค.
ํ์ ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํ๋ typeof ์ฐ์ฐ์๋ก null๊ฐ์ ์ฐ์ฐํด๋ณด๋ฉด null์ด ์๋ object๊ฐ ๋์จ๋ค ๊ทธ๋ฌ๋ฏ๋ก nullํ์ ์ ํ์ธํ ๋๋ typeof๋ง๊ณ === ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค
var foo = null;
console.log(typeof foo === null); // false
console.log(foo === null); // true
symbol
์ฌ๋ณผ(symbol)์ ES6์์ ์๋ก ์ถ๊ฐ๋ 7๋ฒ์งธ ํ์ ์ผ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ํ์ ์ ๊ฐ์ด๋ค. ์ฌ๋ณผ์ ์ฃผ๋ก ์ด๋ฆ์ ์ถฉ๋ ์ํ์ด ์๋ ์ ์ผํ ๊ฐ์ฒด์ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
// ์ฌ๋ณผ key๋ ์ด๋ฆ์ ์ถฉ๋ ์ํ์ด ์๋ ์ ์ผํ ๊ฐ์ฒด์ ํ๋กํผํฐ ํค
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value
๊ฐ์ฒดํ์ (Object type, Reference type)
๊ฐ์ฒด๋ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ์ ๊ด๋ จํ ๋์(์ ์ฐจ,๋ฐฉ๋ฒ,๊ธฐ๋ฅ)์ ๋ชจ๋ ํฌํจํ ์ ์๋ ๊ฐ๋ ์ ์กด์ฌ์ด๋ค.
๊ฐ์ฒด๋ ์์ํ์ ์ ์ ์ธํ ๋๋จธ์ง ๊ฐ๋ค์ด ๋ชจ๋ ๊ฐ์ฒด์ด๊ณ ๊ฐ์ฒด๋ pass-by-reference(์ฐธ์กฐ์ ์ํ ์ ๋ฌ) ๋ฐฉ์์ผ๋ก ์ ๋ฌ๋๋ค.
๋ณ์
๋ณ์๋ var,let,const ํค์๋๋ฅผ ํตํด ์ ์ธํ๊ณ ํ ๋น์ฐ์ฐ์๋ฅผ ํตํด ๊ฐ์ ํ ๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ณ์์ธ ๋ณ์๋ช ์ ์ฌ์ฉํด ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ฐธ์กฐํ๋ค.
๋์ ํ์ดํ(Dynamic Typing)
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ (dynamic/ weak type)์ธ์ด์ด๋ค. ์ด๊ฒ์ ๋ณ์์ ํ์ ์ง์ ์์ด ๊ฐ์ด ํ ๋น๋๋ ๊ณผ์ ์์ ๊ฐ์ ํ์ ์ ์ํด ์๋์ผ๋ก ํ์ ์ด ๊ฒฐ์ ๋ ๊ฒ์ด๋ผ๋ ๋ป์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๋ณ์์ ์ฌ๋ฌ ํ์ ์ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
์ด๋ฅผ ๋์ ํ์ดํ(Dynamic Typing)์ด๋ผํ๋ค.
์ฐธ๊ณ
poiemaweb.com/js-data-type-variable
'JavaScript > ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ES6] Destructuring Assignment / ๊ตฌ์กฐ ๋ถํด ํ ๋น (0) | 2021.01.11 |
---|---|
[ES6] Object ๊ฐ์ฒด (0) | 2021.01.11 |
[ES6] ํธ์ด์คํ ๊ณผ var , let , const ๋น๊ต +์์ ๋ ์ถ๊ฐํ๊ธฐ (0) | 2021.01.07 |