μλ°μ€ν¬λ¦½νΈ μλ£νμ μ΄ν΄νλ κ²μ μλ°μ€ν¬λ¦½νΈ νλ‘κ·Έλλ°μ κΈ°μ΄μ΄μ νμμ λλ€. μ΄ κΈμμλ μλ°μ€ν¬λ¦½νΈμ λ€μν μλ£νμ κΈ°μ΄λΆν° μ¬νκΉμ§ μμΈν λ€λ£Ήλλ€.
β£ λͺ©μ°¨
μλ£νμ μ’ λ₯π
- κΈ°λ³Έ μλ£ν (Primitive Types)
- μ«μ(Number): μ μμ μ€μλ₯Ό λͺ¨λ ν¬ν¨ν©λλ€. ex) let age = 25;
- λ¬Έμμ΄(String): λ¬Έμμ΄ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€. ex) let name = "John";
- λΆλ¦¬μΈ(Boolean): μ°Έ(true) λλ κ±°μ§(false)μ λνλ λλ€. ex) let isStudent = true;
- null: μλμ μΌλ‘ κ°μ΄ μμμ λνλ λλ€. ex) let car = null;
- undefined: κ°μ΄ ν λΉλμ§ μμμ λνλ λλ€. ex) let job;
- μ¬λ³Ό(Symbol) (ES6): κ³ μ νκ³ λ³κ²½ λΆκ°λ₯ν κ°μ μμ±ν©λλ€. ex) let sym = Symbol("id");
- μ°Έμ‘° μλ£ν (Reference Types)
- κ°μ²΄(Object): μ¬λ¬ κ°μ ν€-κ° μμΌλ‘ μ μ₯ν©λλ€. ex) let person = { name: "John", age: 30 };
- λ°°μ΄(Array): μμκ° μλ 리μ€νΈλ₯Ό μ μ₯ν©λλ€. ex) let colors = ["red", "green", "blue"];
- ν¨μ(Function): μ½λλ₯Ό μΊ‘μννκ³ νΈμΆν μ μλ κ°μ²΄μ λλ€. ex) function greet() { console.log("Hello!"); }
- κΈ°ν: λ μ§(Date), μ κ· ννμ(RegExp) λ±
κΈ°λ³Έ μλ£ν μμΈ μ€λͺ π
μλ°μ€ν¬λ¦½νΈμλ μ¬μ― κ°μ§ κΈ°λ³Έ μλ£ν(Primitive Types)μ΄ μμ΅λλ€. μ΄ μλ£νλ€μ κ° μ체λ₯Ό λνλ΄λ©°, λΆλ³μ±(Immutable)μ κ°μ§λλ€. κ° μλ£νμ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
1. μ«μ(Number)
- μ μ: μ«μλ μ μμ μ€μλ₯Ό ν¬ν¨ν λͺ¨λ μ«μ κ°μ λνλ λλ€.
- νΉμ§: μλ°μ€ν¬λ¦½νΈμ μ«μλ λͺ¨λ 64λΉνΈ λΆλ μμμ νμμ λλ€.
- μμ
let age = 25;
let price = 19.99;
- μ£Όμμ¬ν: NaN(Not a Number)κ³Ό Infinity κ°μ νΉλ³ν μ«μ κ°λ ν¬ν¨λ©λλ€.
let invalidNumber = NaN;
let infiniteNumber = Infinity;
2. λ¬Έμμ΄(String)
- μ μ: λ¬Έμμ΄μ ν μ€νΈ λ°μ΄ν°λ₯Ό λνλ λλ€.
- νΉμ§: ν°λ°μ΄ν(" "), μμλ°μ΄ν(' '), λ°±ν±(` `)μΌλ‘ λ¬Έμμ΄μ κ°μ μ μμ΅λλ€.
- μμ
let name = "John";
let greeting = 'Hello, world!';
let multiline = `This is a
multiline string.`;
- μ΄μ€μΌμ΄ν μνμ€: λ¬Έμμ΄ λ΄μμ νΉμ λ¬Έμλ₯Ό ννν λ μ¬μ©λ©λλ€.
- \' : μμλ°μ΄ν
- \" : ν°λ°μ΄ν
- \\ : λ°±μ¬λμ
- \n : μ€λ°κΏ
- \t : ν
- μμ
let text = "She said, \"Hello!\"";
let path = "C:\\Users\\John";
let multilineText = "This is line 1.\nThis is line 2.";
- μ£Όμμ¬ν: λ°±ν±(` `)μ μ¬μ©νλ©΄ ν νλ¦Ώ 리ν°λ΄μ ν΅ν΄ λ€μ€ ν λ¬Έμμ΄κ³Ό λ¬Έμμ΄ λ³΄κ°μ μ¬μ©ν μ μμ΅λλ€.
let age = 25;
let message = `I am ${age} years old.`;
3. λΆλ¦¬μΈ(Boolean)
- μ μ: λΆλ¦¬μΈμ λ Όλ¦¬μ μ°Έ(true)κ³Ό κ±°μ§(false)μ λνλ λλ€.
- νΉμ§: 쑰건문μμ μ£Όλ‘ μ¬μ©λ©λλ€.
- μμ
let isStudent = true;
let isTeacher = false;
4. null
- μ μ: nullμ κ°μ΄ μμμ λνλ΄λ μλ£νμ λλ€.
- νΉμ§: μλμ μΌλ‘ "λΉμ΄ μμ"μ λνλΌ λ μ¬μ©λ©λλ€.
- μμ
let car = null;
5. undefined
- μ μ: undefinedλ κ°μ΄ ν λΉλμ§ μμ λ³μλ₯Ό λνλ λλ€.
- νΉμ§: λ³μκ° μ μΈλμμ§λ§ κ°μ΄ μ€μ λμ§ μμ μνμ λλ€.
- μμ
let job;
6. μ¬λ³Ό(Symbol) (ES6)
- μ μ: μ¬λ³Όμ κ³ μ νκ³ λ³κ²½ λΆκ°λ₯ν κ°μ μμ±νλ λ° μ¬μ©λ©λλ€.
- νΉμ§: μ£Όλ‘ κ°μ²΄μ μ μΌν μμ± ν€λ₯Ό λ§λ€κΈ° μν΄ μ¬μ©λ©λλ€.
- μμ
let sym = Symbol("id");
let obj = { [sym]: 123 };
μ°Έμ‘° μλ£ν μμΈ μ€λͺ π§©
μλ°μ€ν¬λ¦½νΈ μ°Έμ‘° μλ£ν(Reference Types)μ κ°μ²΄(Object)μ λ°°μ΄(Array), ν¨μ(Function) λ±μ μλ£νμ ν¬ν¨νλ©°, κ°μ΄ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°Έμ‘°ν©λλ€. μ°Έμ‘° μλ£νμ κ°λ³μ±(Mutability)μ κ°μ§λλ€.
1. κ°μ²΄(Object)
- μ μ: κ°μ²΄λ μ¬λ¬ κ°μ ν€-κ° μμΌλ‘ μ μ₯νλ λ°μ΄ν° ꡬ쑰μ λλ€.
- νΉμ§: μ€κ΄νΈ { }λ₯Ό μ¬μ©νμ¬ μμ±ν©λλ€. ν€λ λ¬Έμμ΄, κ°μ λͺ¨λ μλ£νμ΄ λ μ μμ΅λλ€.
- μμ
let person = {
name: "John",
age: 30,
isStudent: true
};
- μ£Όμμ¬ν: κ°μ²΄μ μμ±μ μ κ·Όνλ λ°©λ²μ μ νκΈ°λ² . κ³Ό λκ΄νΈ νκΈ°λ² [ ]μ΄ μμ΅λλ€.
console.log(person.name); // John
console.log(person["age"]); // 30
2. λ°°μ΄(Array)
- μ μ: λ°°μ΄μ μμκ° μλ 리μ€νΈλ₯Ό μ μ₯νλ λ°μ΄ν° ꡬ쑰μ λλ€.
- νΉμ§: λκ΄νΈ [ ] λ₯Ό μ¬μ©νμ¬ μμ±νλ©°, μΈλ±μ€λ 0λΆν° μμν©λλ€.
- μμ
let colors = ["red", "green", "blue"];
- μ£Όμμ¬ν: λ°°μ΄ λ©μλλ₯Ό νμ©νμ¬ λ°μ΄ν°λ₯Ό μ‘°μν μ μμ΅λλ€.
colors.push("yellow"); // ["red", "green", "blue", "yellow"]
let firstColor = colors.pop(); // "yellow", colorsλ ["red", "green", "blue"]
3. ν¨μ(Function)
- μ μ: ν¨μλ νΉμ μμ μ μννλ μ½λλ₯Ό μΊ‘μννκ³ νΈμΆν μ μλ κ°μ²΄μ λλ€.
- νΉμ§: ν¨μ μ μΈμκ³Ό ν¨μ ννμμΌλ‘ μ μν μ μμ΅λλ€.
- μμ
// ν¨μ μ μΈμ
function greet() {
console.log("Hello!");
}
// ν¨μ ννμ
let greet = function() {
console.log("Hello!");
};
- μ£Όμμ¬ν: ν¨μλ μΌκΈ κ°μ²΄λ‘, λ³μμ ν λΉνκ±°λ λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬ν μ μμ΅λλ€.
function executeFunc(func) {
func();
}
executeFunc(greet); // "Hello!"
4. λ μ§(Date)
- μ μ: μλ°μ€ν¬λ¦½νΈμμ λ μ§μ μκ°μ λ€λ£¨κΈ° μν΄μλ Date κ°μ²΄λ₯Ό μ¬μ©ν©λλ€.
- νΉμ§: Date κ°μ²΄λ λ μ§μ μκ°μ κΈ°λ°μΌλ‘ λ€μν μμ μ μνν μ μλλ‘ λμμ€λλ€.
- μμ
// νμ¬ λ μ§μ μκ°
let now = new Date();
console.log(now);
// νΉμ λ μ§μ μκ°
let specificDate = new Date('2023-12-31T23:59:59');
console.log(specificDate);
// μ°λ, μ(0-11), μΌ, μκ°, λΆ, μ΄, λ°λ¦¬μ΄
let anotherDate = new Date(2023, 11, 31, 23, 59, 59, 999);
console.log(anotherDate);
5. μ κ· ννμ(Regular Expressions)
- μ μ: μ κ· ννμμ λ¬Έμμ΄μμ ν¨ν΄μ μ°Ύκ³ , μΌμΉμν€κ³ , μΉννλ λ° μ¬μ©λλ κ°λ ₯ν λꡬμ λλ€.
- νΉμ§: μλ°μ€ν¬λ¦½νΈμμλ RegExp κ°μ²΄μ μ κ· ννμ 리ν°λ΄μ μ¬μ©νμ¬ μ κ· ννμμ λ€λ£° μ μμ΅λλ€.
- μμ
- 리ν°λ΄ λ°©μ
let regex = /pattern/flags;
- RegExp κ°μ²΄ μμ±μ
let regex = new RegExp('pattern', 'flags');
μλ£ν λ³νπ
μλ°μ€ν¬λ¦½νΈμμλ μλ£ν λ³νμ΄ λ§€μ° μ€μν©λλ€. λ³ν λ°©λ²μ λͺ μμ λ³ν(Explicit Conversion)κ³Ό μμμ λ³ν(Implicit Conversion)μΌλ‘ λλ©λλ€.
λͺ μμ λ³ν
- μ μ: λͺ μμ λ³νμ κ°λ°μκ° μλμ μΌλ‘ μλ£νμ λ³ννλ κ²μ λλ€.
- λ°©λ² λ° μμ
- λ¬Έμμ΄λ‘ λ³ν
let num = 123;
let str = String(num); // "123"
- μ«μλ‘ λ³ν
let str = "123";
let num = Number(str); // 123
- λΆλ¦¬μΈμΌλ‘ λ³ν
let str = "Hello";
let bool = Boolean(str); // true
μμμ λ³ν
- μ μ: μμμ λ³νμ μλ°μ€ν¬λ¦½νΈκ° μλμΌλ‘ μλ£νμ λ³ννλ κ²μ λλ€.
- μμ
let result = "5" + 2; // "52"
let result2 = "5" - 2; // 3
let result3 = 5 * "2"; // 10
- μ£Όμμ¬ν: μμμ λ³νμ μκΈ°μΉ μμ κ²°κ³Όλ₯Ό μ΄λν μ μμΌλ―λ‘ μ£Όμκ° νμν©λλ€.
μλ£ν νμΈ λ°©λ²π
μλ°μ€ν¬λ¦½νΈμμλ μλ£νμ νμΈνλ μ¬λ¬ κ°μ§ λ°©λ²μ΄ μμ΅λλ€.
typeof μ°μ°μ
- μ μ: λ³μμ μλ£νμ λ¬Έμμ΄λ‘ λ°νν©λλ€.
- μμ
console.log(typeof 123); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (λ²κ·Έλ‘ μΈν΄ κ°μ²΄λ‘ λ°ν)
console.log(typeof Symbol("id")); // "symbol"
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function() {}); // "function"
instanceof μ°μ°μ
- μ μ: κ°μ²΄κ° νΉμ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ νμΈν©λλ€.
- μμ
let arr = [];
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); // true
Object.prototype.toString.call()
- μ μ: λ³΄λ€ μ νν μλ£νμ λ°νν©λλ€.
- μμ
console.log(Object.prototype.toString.call(123)); // "[object Number]"
console.log(Object.prototype.toString.call("Hello")); // "[object String]"
console.log(Object.prototype.toString.call(true)); // "[object Boolean]"
console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"
console.log(Object.prototype.toString.call(Symbol("id"))); // "[object Symbol]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call(function() {})); // "[object Function]"
μ¬ν λ΄μ©π
μλ°μ€ν¬λ¦½νΈ μλ£νμ λν μ¬ν λ΄μ©μ λ€λ£¨μ΄ λ³΄κ² μ΅λλ€.
λΆλ³μ±(immutability)κ³Ό κ°λ³μ±(mutability)
- μ μ:
- λΆλ³μ±: κΈ°λ³Έ μλ£ν(μμ κ°)μ λΆλ³μ±(Immutable)μ κ°μ§λλ€.
- κ°λ³μ±: μ°Έμ‘° μλ£νμ κ°λ³μ±(Mutable)μ κ°μ§λλ€.
- μμ
let str = "Hello";
str[0] = "h"; // λΆλ³μ±μΌλ‘ μΈν΄ λ³κ²½λμ§ μμ
console.log(str); // "Hello"
let arr = [1, 2, 3];
arr[0] = 0; // κ°λ³μ±μΌλ‘ μΈν΄ λ³κ²½λ¨
console.log(arr); // [0, 2, 3]
μμκ°κ³Ό μ°Έμ‘°κ°μ μ°¨μ΄
- μ μ:
- μμκ°: κ° μ체λ₯Ό μ μ₯ν©λλ€.
- μ°Έμ‘°κ°: λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ μ₯ν©λλ€.
let a = 10;
let b = a;
a = 20;
console.log(b); // 10 (μμκ°μ κ° λ³΅μ¬)
let obj1 = { name: "John" };
let obj2 = obj1;
obj1.name = "Doe";
console.log(obj2.name); // "Doe" (μ°Έμ‘°κ°μ μ£Όμ 볡μ¬)
ν΄λ‘μ (Closure)
- μ μ: ν΄λ‘μ λ ν¨μμ κ·Έ ν¨μκ° μ μΈλ λ μ컬 νκ²½μ μ‘°ν©μΌλ‘, λ΄λΆ ν¨μμμ μΈλΆ ν¨μμ λ³μλ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
- μμ
function outer() {
let counter = 0;
function inner() {
counter++;
console.log(counter);
}
return inner;
}
const increment = outer();
increment(); // 1
increment(); // 2
increment(); // 3
ν΅μ¬ λ΄μ©π