πΎ νμ (data type, μλ£ν) μ΄λ?
Cλ Javaμ κ°μ μΈμ΄λ μ μ νμ (static type) μΈμ΄λ‘ λ³μ μ μΈ μ λ³μμ μ μ₯ν κ°μ μ’ λ₯λ₯Ό μ¬μ μ νμ μ§μ (Type annotation)νμ¬μΌ νλ€. λ°λ©΄ μλ°μ€ν¬λ¦½νΈλ λ³μμ νμ μ§μ μμ΄ κ°μ΄ ν λΉλλ κ³Όμ μμ μλμΌλ‘ νμ μ΄ κ²°μ λλ ‘λμ νμ (dynamic type)’ μΈμ΄μ΄λ€.
λ³μ μ μΈμ λ©λͺ¨λ¦¬μ κ°μ μ μ₯νκΈ° μν΄μλ λ¨Όμ λ©λͺ¨λ¦¬ 곡κ°μ ν보ν΄μΌ ν λ©λͺ¨λ¦¬μ ν¬κΈ°(byte)λ₯Ό μμμΌνλ€. μ΄λ κ°μ μ’ λ₯μ λ°λΌ ν보ν΄μΌ ν λ©λͺ¨λ¦¬μ ν¬κΈ°κ° λ€λ₯΄κΈ° λλ¬Έμ΄λ€. μ΄λ κ°μ μ’ λ₯, μ¦ λ°μ΄ν°μ μ’ λ₯λ₯Ό λ°μ΄ν° νμ (data type)μ΄λΌ νλ€.
→ κΈ°λ³Έ νμ μ ν¬κ² μμ νμ κ³Ό κ°μ²΄ νμμΌλ‘ ꡬλΆν μ μλ€.
→ κ° νμ μ κ³ μ ν μμ±κ³Ό λ©μλλ₯Ό κ°μ§λ€.
π μμ νμ (primitive type)
string
number
bigint
boolean
undefined
symbol
null
π κ°μ²΄ νμ (object/reference type)
μμ νμ μ΄ μλ λͺ¨λ μλ£νμ κ°μ²΄νμ μΌλ‘ reference type μ΄λΌκ³ λ νκ³ , array, object, functionμ ν¬ν¨νλ€.
object
πΎ μμνμ (primitive type)
number (μ«μν)
μ«μλ₯Ό νννκΈ° μν λ°μ΄ν° νμ μΌλ‘ μ μ(integer)μ μ€μ(float)λ₯Ό λͺ¨λ ννν μ μλ€.
let num = 123;
μ«μνμ μΌλ°μ μΈ μ«μ μΈμ Infinity
-Infinity
NaN
κ°μ 'νΉμ μ«μ κ°(special numeric value)'μ΄ ν¬ν¨λλ€.
console.log(10 / 0) // Infinity
console.log(10 / -0); // -Infinity
console.log("not a number" / 2); // NaN
• Infinity
λ μ΄λ€ μ«μλ³΄λ€ λ ν° νΉμ κ°, 무νλ(∞)λ₯Ό λνλΈλ€.
• NaN(Not A Number)
μ κ³μ° μ€μ μλ¬κ° λ°μνλ€λ κ²μ λνλ΄μ£Όλ κ°μ΄λ€. λΆμ ννκ±°λ μ μλμ§ μμ μν μ°μ°μ μ¬μ©νλ©΄ κ³μ° μ€μ μλ¬κ° λ°μνλλ°, μ΄λ NaN
μ΄ λ°νλλ€. μ°μ° κ³Όμ μ΄λκ°μμ NaN
μ΄ λ°νλμλ€λ©΄, μ΄λ λͺ¨λ κ²°κ³Όμ μν₯μ λ―ΈμΉλ€.
BigInt
λ΄λΆ νν λ°©μ λλ¬Έμ μλ°μ€ν¬λ¦½νΈμμ 253 - 1(9007199254740991) λ³΄λ€ ν° κ° νΉμ -(253 - 1) λ³΄λ€ μμ μ μλ 'μ«μν’μ μ¬μ©ν΄ λνλΌ μ μμΌλ©°, μμ£Ό ν° μ«μκ° νμν μν©μ΄κ±°λ μμ£Ό λμ μ λ°λλ‘ μμ
μ ν΄μΌ ν λ BigInt
λ₯Ό μ¬μ©νλ€.
BigInt
νμ νμ€μΌλ‘ μ±νλ μ§ μΌλ§ μ λ μλ£νμΌλ‘, κΈΈμ΄μ μκ΄μμ΄ μ μλ₯Ό λνλΌ μ μλ€.
BigInt
ν κ°μ μ μ 리ν°λ΄ λμ nμ λΆμ¬ λ§λ λ€.
const bigInt = 1234567890123456789012345678901234567890n;
String (λ¬Έμν)
λΉ λ¬Έμμ΄μ΄λ κΈμλ€λ‘ μ΄λ£¨μ΄μ§ ν μ€νΈ λ°μ΄ν°λ₯Ό λνλ΄λ λ°μ΄ν° νμ μΌλ‘ μμ λ°μ΄ν(’), ν° λ°μ΄ν(”), λ°±ν±(`)μΌλ‘ κ°μΈμ λνλΈλ€.
let str = "Hello"; // ν° λ°μ΄ν
str = 'Hello'; // μμ λ°μ΄ν
str = `Hello`; // λ°±ν±
• λ°±ν±(backtick)μΌλ‘ λ³μλ ννμμ κ°μΌ ν ${...}
μμ λ£μ΄μ£Όλ©΄, μνλ λ³μλ ννμμ λ¬Έμμ΄ μ€κ°μ λ£μ μ μλ€.
let name = "Helen";
// λ³μλ₯Ό λ¬Έμμ΄ μ€κ°μ μ½μ
console.log(`Hello, ${name}`); // Hello, Helen
// ννμμ λ¬Έμμ΄ μ€κ°μ μ½μ
console.log(`the reselt is ${1 + 2}`); // the reselt is 3
Boolean (λΆλ¦¬μΈ)
λ
Όλ¦¬μ μ°Έ, κ±°μ§μ λνλ΄λ true
μ false
λ‘ λνλΌ μ μμΌλ©°, λΆλ¦¬μΈ νμ
μ κ°μ μ°Έκ³Ό κ±°μ§μΌλ‘ ꡬλΆλλ 쑰건μ μν΄ νλ‘κ·Έλ¨μ νλ¦μ μ μ΄νλ 쑰건문μμ μμ£Ό μ¬μ©νλ€.
let isChecked = true;
let isAdult = false;
let passed = 7 > 1;
console.log(passed) // true;
→ λΆλ¦°κ°μ λΉκ΅ κ²°κ³Όλ₯Ό μ μ₯ν λλ μ¬μ©λλ€.
• Booleanμ΄ falseμΈ κ²½μ° : 0
null
undefiend
λΉ λ¬Έμμ΄(’’)
NaN
Boolean(0) // false
Boolean('0') // true
Boolean('') // false
Boolean(' ') // true
Symbol (μ¬λ³Ό)
μ¬λ³Όμ ES6μμ μλ‘κ² μΆκ°λ νμ μΌλ‘ λ³κ²½ λΆκ°λ₯ν μμ νμ μ κ°μ΄λ€. μ¬λ³Όμ μ£Όλ‘ μ΄λ¦μ μΆ©λ μνμ΄ μλ μ μΌν κ°μ²΄μ νλ‘νΌν° ν€(property key)λ₯Ό λ§λ€κΈ° μν΄ μ¬μ©νλ€. μ¬λ³Όμ Symbol ν¨μλ₯Ό νΈμΆν΄ μμ±νλ€. μ΄λ μμ±λ μ¬λ³Ό κ°μ λ€λ₯Έ μ¬λ³Ό κ°λ€κ³Ό λ€λ₯Έ μ μΌν μ¬λ³Ό κ°μ΄λ€.
let sym = Symbol("key");
console.log(sym) // Symbol(key)
console.log(typeof sym) // symbol
null
nullμ μλμ μΌλ‘ λ³μμ κ°μ΄ μλ€λ κ²μ λͺ μν λ μ¬μ©νλ€.
μ΄λ λ³μκ° κΈ°μ΅νλ λ©λͺ¨λ¦¬ μ΄λλ μ€μ μ°Έμ‘° μ 보λ₯Ό μ κ±°νλ κ²μ μλ―Ένλ©° μλ°μ€ν¬λ¦½νΈ μμ§μ λꡬλ μ°Έμ‘°νμ§ μλ λ©λͺ¨λ¦¬ μμμ λν΄ κ°λΉμ§ μ½λ μ μ μνν κ²μ΄λ€.
let result = null;
→ resultλ₯Ό μ μ μκ±°λ, κ·Έ κ°μ΄ λΉμ΄μμμ λνλΈλ€.
• ν¨μκ° νΈμΆλμμΌλ μ ν¨ν κ°μ λ°νν μ μλ κ²½μ°, λͺ μμ μΌλ‘ nullμ λ°ννκΈ°λ νλ€.
let element = document.querySelector('.myElem');
console.log(element); // null
→ HTML λ¬Έμμ myElem ν΄λμ€λ₯Ό κ°λ μμκ° μλ€λ©΄ nullμ λ°ννλ€.
• null
κ°μ μλ£νμ object
λ‘ μ΄λ μλ°μ€ν¬λ¦½νΈ μ€κ³μμ μ€λ₯μ΄λ©°, null νμ
μ νμΈν λλ typeof μ°μ°μκ° μλ μΌμΉ μ°μ°μ(===)λ₯Ό μ¬μ©ν΄μΌ νλ€.
typeof null // object
let age = null;
console.log(age === null); // true
undefined
undefinedλ κ°μ΄ ν λΉλμ§ μμ μνλ₯Ό λνλΌ λ μ¬μ©νλ©°, λ³μλ μ μΈνμ§λ§ κ°μ ν λΉνμ§ μμλ€λ©΄ ν΄λΉ λ³μμ undefinedκ° μλμΌλ‘ ν λΉλλ€. μ¦, μ μΈμ λμμ§λ§ κ°μ ν λΉνμ§ μμ λ³μμ μ κ·Όνκ±°λ μ‘΄μ¬νμ§ μλ κ°μ²΄ νλ‘νΌν°μ μ κ·Όν κ²½μ° undefinedκ° λ°νλλ€.
let storage;
console.log(storage); // undefined
• κ°λ°μκ° λ³μμ undefined
λ₯Ό λͺ
μμ μΌλ‘ ν λΉνλ κ²λ κ°λ₯νκΈ΄ νλ€.
let age = 100;
age = undefined;
→ νμ§λ§ μ΄λ κ² undefined
λ₯Ό μ§μ ν λΉνλ κ±Έ κΆμ₯νμ§ μλλ€. undefined
λ κ°μ΄ ν λΉλμ§ μμ λ³μμ μ΄κΈ°νμ μ¬μ©νλ κ°μ΄λ―λ‘, λ³μκ° ‘λΉμ΄μκ±°λ’ ‘μ μ μλ’ μνλΌλ κ±Έ λνλ΄λ €λ©΄ null
μ ν λΉνλ κ²μ κΆμ₯νλ€.
• null
κ³Ό undefined
λ λλ± μ°μ°μ(==)μ μΌμΉ μ°μ°μ(===)λ‘ λΉκ΅ν λ κ·Έ κ²°κ³Όκ°μ΄ λ€λ₯΄λ€.
null == undefined; // true
null === undefined; // false
πβοΈμ°Έκ³ μλ°μ€ν¬λ¦½νΈμμ μμ£Ό 보λ κ²°κ³Όλ€λ‘ undefinedμ nullμ΄ μλ€. undefinedλ 'κ°μ ν λΉνμ§ μμ κ²°κ³Ό'μ΄κ³ , nullμ '무μΈκ°λ₯Ό μ°Ύμ§λ§ μ무κ²λ μμμ μ λ¬ν κ°'μ΄λ€. λ°λΌμ λ§μ½ console.logλ₯Ό μ¬μ©ν΄ λ³μλ₯Ό νμΈνλλ°, undefined
κ° λ¬λ€λ©΄ κ°μ΄ ν λΉλμ§ μμ μν (let x;
) λΌλ μλ―Έμ΄κ³ , null
μ ν΄λΉ κ²°κ³Όκ° μμ(let x = null;
) μ μλ―Ένλ€.
πΎ κ°μ²΄ νμ (object/reference type)
κ°μ²΄λ λ°μ΄ν°μ κ·Έ λ°μ΄ν°μ κ΄λ ¨ν λμ(μ μ°¨, λ°©λ², κΈ°λ₯)μ λͺ¨λ ν¬ν¨ν μ μλ κ°λ μ μ‘΄μ¬μ΄λ€. λ¬λ¦¬ λ§ν΄, μ΄λ¦κ³Ό κ°μ κ°μ§λ λ°μ΄ν°λ₯Ό μλ―Ένλ νλ‘νΌν°(property)μ λμμ μλ―Ένλ λ©μλ(method)λ₯Ό ν¬ν¨ν μ μλ λ 립μ 주체μ΄λ€.
μλ°μ€ν¬λ¦½νΈλ κ°μ²΄(object) κΈ°λ°μ μ€ν¬λ¦½νΈ μΈμ΄λ‘μ μλ°μ€ν¬λ¦½νΈλ₯Ό μ΄λ£¨κ³ μλ κ±°μ “λͺ¨λ κ²”μ΄ κ°μ²΄μ΄λ€. μμ νμ (Primitives)μ μ μΈν λλ¨Έμ§ κ°λ€(λ°°μ΄, ν¨μ, μ κ·ννμ λ±)μ λͺ¨λ κ°μ²΄μ΄λ€. λν κ°μ²΄λ pass-by-reference(μ°Έμ‘°μ μν μ λ¬) λ°©μμΌλ‘ μ λ¬λλ€.
πΎ typeof μ°μ°μ
νΌμ°μ°μμ μλ£νμ λ°ννλ©°, μλ£νμ λ°λΌ μ²λ¦¬ λ°©μμ λ€λ₯΄κ² νκ³ μΆκ±°λ λ³μμ μλ£νμ μμλ΄κ³ μ ν λ μ¬μ©νλ€.
typeof 1 // number
typeof NaN // number
typeof 10n // bigint
typeof "stirng" // string
typeof true // boolean
typeof undefined // undefined
typeof null // object
typeof Symbol("id") // symbol
typeof Math // object
typeof new Date() // object
typeof console.log // function
→ null
nullμ λ³λμ κ³ μ ν μλ£νμ κ°μ§λ νΉμ κ°μΌλ‘ κ°μ²΄λ μλμ§λ§, νμ νΈνμ±μ μ μ§νκΈ° μν΄ μ΄λ° μ€λ₯λ₯Ό μμ νμ§ μκ³ λ¨κ²¨λμλ€. (μΈμ΄ μ체μ μ€λ₯λ‘ nullμ κ°μ²΄κ° μλ)
→ Math
μν μ°μ°μ μ 곡νλ λ΄μ₯ κ°μ²΄. λ΄μ₯ κ°μ²΄λ κ°μ²΄νμ΄λ€.
→ console.log
ν¨μλ functionμ λ°ννλ€. ν¨μλ κ°μ²΄νμ μνλ©°, ν¨μκ° μλ κ°μ²΄νμ λͺ¨λ objectλ₯Ό λ°ννλ€.
μλ£μΆμ²: JAVASCRIPT.INFO
βοΈ κ³΅λΆνλ©° μ 리ν λ΄μ©μ λλ€. μλͺ»λ μ 보λ λ 곡μ ν λ΄μ©μ΄ μμΌλ©΄ λκΈλ‘ μλ €μ£ΌμΈμ!
μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€ π