λ³μλ?
κ°μ μμΉ(μ£Όμ)λ₯Ό κΈ°μ΅νλ μ μ₯μμ΄λ€. μ¬κΈ°μ κ°μ μμΉλ κ°μ΄ μμΉνκ³ μλ λ©λͺ¨λ¦¬ μμ μ£Όμλ₯Ό μλ―Ένλ€.
μ¦, λ³μλ κ°μ΄ μμΉνκ³ μλ λ©λͺ¨λ¦¬ μ£Όμμ μ κ·ΌνκΈ° μν΄ μ¬λμ΄ μ΄ν΄ν μ μλ μΈμ΄λ‘ λͺ λͺ ν μλ³μμ΄λ€.
μλ°μ€ν¬λ¦½νΈμμ λ³μ
μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄μ΄κΈ° λλ¬Έμ λ³μμ νμ μ§μ μμ΄ κ°μ΄ ν λΉ λλ κ³Όμ μμ μλμΌλ‘ λ³μμ νμ μ΄ κ²°μ λλ€.(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 |