
π― JavaScriptμ μ λ°μ μΈ κ°λ μ λν΄ μμλ΄ λλ€.
μΈν°νλ¦¬ν° μΈμ΄λ λ³λμ μ»΄νμΌ κ³Όμ μμ΄ μ€νλλ―λ‘ μ½λ μμ± ν λ°λ‘ μ€ννλ μΈμ΄μ λλ€.
μ»΄νμΌ λ¨κ³κ° μμ΅λλ€.
μ€ν μλκ° λΉκ΅μ λ립λλ€.
μμ κ³Ό μ€νμ΄ λΉ λ¦
λλ€.
μ΅μ JavaScript μμ§(V8 λ±)μ JIT(Just-In-Time) μ»΄νμΌ λ°©μμ λμ νμ¬ μλλ₯Ό μ΅μ ννκ³ μμ΅λλ€.
π€ JIT μ»΄νμΌ λ°©μμ΄λ?
μΈν°νλ¦¬ν° λ°©μκ³Ό μ»΄νμΌλ¬ λ°©μμ νΌν©ν λ°©μμΌλ‘, μ€ν λμ€μ νμν μ½λλ§ μ¦μ μ»΄νμΌνμ¬ μλλ₯Ό λμΈ λ°©μμ λλ€.
μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄λ‘, λ³μμ μ μ₯λλ κ°μ λ°λΌ νμ μ΄ μλμΌλ‘ λ³κ²½λ μ μμ΅λλ€.
κ°λ°μκ° μλμ μΌλ‘ νμ μ λ³κ²½νλ λ°©μμ λλ€.
λ¬Έμμ΄ λ³ν: κ°.toString() λλ String(κ°)
μ«μ λ³ν: Number(κ°)
λΆλ¦¬μΈ λ³ν: Boolean(κ°)
κ°λ°μκ° μλνμ§ μμλ μ°μ° κ³Όμ μμ νμ μ΄ μλ λ³νλ©λλ€.
λ¬Έμμ΄ λ³ν: κ° + ""
μ«μ λ³ν: κ° * 1
λΆλ¦¬μΈ λ³ν: !!κ°
β οΈ μμμΉ λͺ»ν νμ
λ³νμ΄ λ°μν μ μμΌλ―λ‘, typeof λλ μΌμΉ μ°μ°μ (===)λ₯Ό μ¬μ©νμ¬ νμ
μ κ²μ¬νλ κ²μ΄ μ€μν©λλ€.
=> μ΄λ₯Ό λ°©μ§νκΈ° μν΄ TypeScript μ¬μ©μ κ³ λ €ν μ μμ΅λλ€.
ν΄λμ€ κΈ°λ°μ΄ μλ νλ‘ν νμ κΈ°λ° μμμ μ¬μ©ν©λλ€. λͺ¨λ κ°μ²΄λ νλ‘ν νμ μ΄λΌλ λΆλͺ¨ κ°μ²΄λ₯Ό μμλ°μΌλ©°, νλ‘ν νμ 체μ΄λμ ν΅ν΄ μμ±κ³Ό λ©μλλ₯Ό 곡μ ν μ μμ΅λλ€.
function Animal(name) {
this.name = name;
}
Animal.prototype.sayName = function () {
console.log(`My name is ${this.name}`);
};
const dog = new Animal('Buddy');
dog.sayName(); // "My name is Buddy"
JavaScriptλ ν¨μν νλ‘κ·Έλλ°, λͺ λ Ήν νλ‘κ·Έλλ°, κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λͺ¨λ μ§μν©λλ€.
ν¨μλ₯Ό κ°μΌλ‘ λ€λ£¨κ³ , λΆμ ν¨κ³Ό(side effects)λ₯Ό μ΅μννλ©°, μν λ³κ²½μ νΌνκ³ , λΆλ³μ±μ μ μ§νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ λλ€.
const add = (a, b) => a + b;
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]
λͺ λ Ήν νλ‘κ·Έλλ°μ μ΄λ»κ² ν μ§λ₯Ό λͺ μνλ νλ‘κ·Έλλ° μ€νμΌμ λλ€. μ¦, μν λ³κ²½κ³Ό λͺ λ Ήμ ν΅ν΄ νλ‘κ·Έλ¨μ μ μ΄νλ λ°©μμ λλ€.
const numbers = [1, 2, 3, 4];
let doubled = [];
for (let i = 0; i < numbers.length; i++) {
doubled.push(numbers[i] * 2);
}
console.log(doubled); // [2, 4, 6, 8]
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ°©λ²μ κ°μ²΄λ‘ λ¬Άμ΄μ μ²λ¦¬νλ λ°©μμ λλ€.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Buddy');
dog.speak(); // "Buddy barks."
Brendan Eich μ¬μ§ (μΆμ²: wikipedia) | Netscape μΉμ¬μ΄νΈ νλ©΄ (μΆμ²: zdnet) |
|---|
μλ°μ€ν¬λ¦½νΈλ 1995λ , λ·μ€μΌμ΄ν(Netscape)μ¬μ κ°λ°μ Brendan Eichμ μν΄ μΉ νμ΄μ§μ 보쑰μ μΈ κΈ°λ₯μ μν΄ κ°λ°λμμ΅λλ€.
1995λ : μ΄λ¦ λ³κ²½
1996λ : ν¬λ‘μ€ λΈλΌμ°μ§ μ΄μ λ°μ
Netscape Navigator browserμ Mircrosoftμ Internet Explorer μ μ¬μ©μ μ μ μ¨μ λμ΄κΈ° μν΄ κ²½μμ μΌλ‘ κΈ°λ₯μ μΆκ°νλ©΄μ, μλ°μ€ν¬λ¦½νΈκ° λΈλΌμ°μ λ§λ€ λ€λ₯΄κ² λμνκ² λμμ΅λλ€. μ΄λ‘ μΈν΄ κ°μ μλ°μ€ν¬λ¦½νΈ νμΌμ΄ λΈλΌμ°μ λ§λ€ λμνμ§ μλ ν¬λ‘μ€ λΈλΌμ°μ§ μ΄μκ° λ°μνμ΅λλ€.
ECMAScriptλ μλ°μ€ν¬λ¦½νΈ(JavaScript)μ κΈ°λ°μ΄ λλ νμ€ κ·κ²©μΌλ‘ 1996λ μ λ·μ€μΌμ΄νκ° ECMA(μ λ½ μ»΄ν¨ν° μ μ‘°μ 체 νν)μ νμ€ν μμ²μ νλ©΄μ κ°λ°μ΄ μμλμμ΅λλ€.
1997λ
: ECMAScript 1 (ES1) μ±ν
ECMA μ΄νμμ ECMAScript 1λ‘ μ±νλμκ³ , μ΄ν ECMAScriptλΌλ μ΄λ¦μ΄ 곡μμ μΌλ‘ μ¬μ©λμμ΅λλ€.
λ²μ νκΈ°λ²
ECMAScript(μ°λ)
ES(μ°λ)
ES(ν)
μμ : ECMAScript2015 - ES2015 - ES6
β¨ λΈλΌμ°μ λ λΈλΌμ°μ λ²μ λ§λ€ μ§μνλ μλ°μ€ν¬λ¦½νΈ μ€νμ΄ μμ΄ν©λλ€. (ECMAScript κΈ°μ€μ λ°λΌκ°μ§ μμ΅λλ€.)
μλ°μ€ν¬λ¦½νΈμ μ€μν λ²μ μΌλ‘ let, const, arrow function, class, modules, promise λ± λ§μ μλ‘μ΄ κΈ°λ₯λ€μ΄ λμ
λμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μλ°μ€ν¬λ¦½νΈλ λμ± κ°λ ₯νκ³ μ μ§λ³΄μκ° μ©μ΄ν μΈμ΄λ‘ λ°μ νμμΌλ©°, λΉλκΈ° μ²λ¦¬μ λͺ¨λνκ° κ°νλμμ΅λλ€.
π€ κ°λ°μμ μ΅μ κΈ°λ₯μ μ¬μ©νκ³ μΆμ λλ μ΄λ»κ² ν κΉ?
polyfillμ Babelμ νμ©ν΄μ μ΅μ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€.
polyfill
μ§μνμ§ μλ λΈλΌμ°μ μμ μ΅μ κΈ°λ₯μ μ 곡νκΈ° μν΄ νμν μ½λμ λλ€. polyfill λΌμ΄λΈλ¬λ¦¬λ μ£Όλ‘core-jsλ₯Ό μ¬μ©ν©λλ€.
Babel
μ΅μ λ²μ μ μ½λλ₯Ό μ΄μ λ²μ μΌλ‘ λ³ννλλ° μ¬μ©λλ λꡬμ λλ€.@babel/preset-envμ μ¬μ©νλ©΄, μ€μΉλ ν΄λ¦¬ν(core-jsλ±)μ κ°μ Έμ νμν κΈ°λ₯λ§ μ μ©ν μ μμ΅λλ€.
μ»΄ν¨ν°λ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν΄ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκ³ , μ΄ λ°μ΄ν°λ₯Ό μ°ΎκΈ° μν΄ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό μ¬μ©ν©λλ€. λ³μλ μ΄ μ£Όμλ₯Ό λμ ν μ΄λ¦μΌλ‘, λ°μ΄ν°λ₯Ό μ½κ² μ°Ύμ μ μλλ‘ λμμ€λλ€. λ³μλ λ°μ΄ν°λ₯Ό λ΄μλμ μμμ μ΄λ¦μ΄λΌκ³ μκ°νλ©΄ λ©λλ€.
ν€μλ λ³μλͺ
ν λΉ μ°μ°μ κ° μΌλ‘ μ΄λ£¨μ΄μ§λλ€.
const variable = 1;
1. μ μΈ λ¨κ³
λ³μμ λ³μ κ°μ²΄μ λ±λ‘ν©λλ€.
2. μ΄κΈ°ν λ¨κ³
λ³μλ₯Ό λ©λͺ¨λ¦¬μ ν λΉνκ³ , undefinedλ‘ μ΄κΈ°νν©λλ€.
3. ν λΉ λ¨κ³
undefinedλ‘ μ΄κΈ°νλ λ³μμ μ€μ λ‘ κ°μ ν λΉν©λλ€.
λ³μ μμ± 3λ¨κ³λ var, const, let λ³λ‘ λ€λ₯΄κ² λμν©λλ€.
π νΈμ΄μ€ν κ³Ό λ³μλ 미리 μμ±ν μ λΈλ‘κ·Έλ₯Ό ν΅ν΄ κ°λ μ νμΈν΄μ£ΌμΈμ!
λ°μ΄ν°μ μ’ λ₯λ₯Ό λ°μ΄ν° νμ , μλ£νμ΄λΌκ³ ν©λλ€. μλ°μ€ν¬λ¦½νΈμ μλ£νμ μμ νμ κ³Ό μ°Έμ‘° νμ μΌλ‘ λλ©λλ€.
String, Number, BigInt, Undefined, Null, Boolean, Symbol
κ°μ λ³κ²½ λΆκ°λ₯ν©λλ€. (immutable value)
κ°μΌλ‘μ¨ μ λ¬λ©λλ€.
μμ λνΌ κ°μ²΄κ° λ°λ‘ μ‘΄μ¬ν©λλ€.
π€ μμ λνΌ κ°μ²΄ (Primitive Wrapper Object)λ?
μμ νμ κ°μ κ°μ²΄μ²λΌ μ·¨κΈν μ μκ² ν΄μ£Όλ μμ κ°μ²΄μ λλ€. μλ°μ€ν¬λ¦½νΈλ μμ νμ μ κ°μ²΄μ²λΌ λ€λ£° μ μλ λνΌ κ°μ²΄λ₯Ό μλμΌλ‘ μμ±ν©λλ€.
<
StringλνΌ κ°μ²΄ μμ>let str = "hello"; console.log(str.toUpperCase()); // "HELLO"π‘ λνΌ κ°μ²΄λ₯Ό μ¬μ©ν΄λ μμ κ°μ λ³κ²½λμ§ μκ³ , λ©μλλ₯Ό νΈμΆν ν λνΌ κ°μ²΄λ μ¬λΌμ§λλ€.
Number Typeμλ°μ€ν¬λ¦½νΈμμλ νλμ μ«μ νμ
, Numberλ§ μ‘΄μ¬ν©λλ€. λͺ¨λ μ«μλ μ€μλ‘ μ·¨κΈλ©λλ€. μ¦, μλ°μ€ν¬λ¦½νΈμλ λ³λμ μ μ νμ
μ΄ μμ΅λλ€.
μ«μν Number Type
λ°°μ λ°λ 64λΉνΈ λΆλμμμ (IEEE 754)νμμ μ¬μ©ν©λλ€.
π€ λ°°μ λ°λ 64λΉνΈ λΆλμμμ (IEEE 754)νμμ΄λ?
μ μκΈ°μ μ ννμ λΆλμμμ ννλ°©μ νμ€μ λλ€. μ€μ μ°μ° μ, κ·Όμ¬κ°μΌλ‘ μ²λ¦¬λ©λλ€.
console.log(0.1 + 0.2); // 0.30000000000000004
μ«μμ λ²μ
// μμ λνΌ κ°μ²΄(Number)μμ μμ λ³μλ‘ μ 곡
console.log(Number.MAX_SAFE_INTEGER); // -9,007,199,254,740,991
console.log(Number.MIN_SAFE_INTEGER); // 9,007,199,254,740,991

μ«μ μ΄μΈμ Number Type
Infinity : 무νλλ₯Ό λνλ΄λ μ«μ νμ
μ
λλ€.
NaN : Not a NumberλΌλ λ»μΌλ‘ μ«μκ° μλμ λνλ΄λ μ«μ νμ
μ
λλ€.
BigInt Typeμμ μ λ°λλ‘ μ μλ₯Ό λνλΌ μ μλ JavaScript μ«μ μμ κ°μ
λλ€. Number νμ
μ΄ ννν μ μλ λ²μλ₯Ό μ΄κ³Όνλ λ§€μ° ν° μ μ κ°μ λ€λ£° μ μκ² ν΄μ€λλ€.
λ€λ₯Έ νμ κ³Ό νΌν©νμ¬ μ°μ°ν μ μμ΅λλ€.
BigIntλ μ«μ λ€μ nμ λΆμ¬ μ¬μ©ν©λλ€.
const bigIntValue = 123456789012345678901234567890n;
console.log(bigIntValue); // 123456789012345678901234567890n
String Typeλ¬Έμμ΄ λ°μ΄ν°λ₯Ό ννν λ μ¬μ©λ©λλ€. λ¬Έμμ΄μ λ¬Έμλ€μ μμλ₯Ό μλ―Ένλ©°, UTF-16 μΈμ½λ© λ°©μμΌλ‘ κ° λ¬Έμλ₯Ό ννν©λλ€.
λ¬Έμμ΄μ λ¬Έμλ€μ μ§ν©μ λλ€.
λ¬Έμμ΄μ κ° λ¬Έμλ 0λΆν° μμνλ μΈλ±μ€ λ²νΈλ‘ ꡬλΆλ©λλ€.
let str = "hello";
console.log(str[0]); // "h" (0λ²μ§Έ μΈλ±μ€)
console.log(str[1]); // "e" (1λ²μ§Έ μΈλ±μ€)
console.log(str.length); // 5 (λ¬Έμμ΄μ κΈΈμ΄)
νκΈ°λ²
λ°μ΄ν('), μλ°μ΄ν("), λ°±ν±(`)μΌλ‘ κ°μΈμ λ¬Έμμ΄μμ ννν©λλ€.
λ°±ν±(`)μ μ€λ°κΏ νμμ΄ νμ©λλ©° λ¬Έμμ΄ λ΄μμ λ³μλ₯Ό μ§μ μ½μ νκ±°λ ννμμ κ³μ°νμ¬ λμ μΌλ‘ κ°μ μμ±ν μ μμ΅λλ€.
let name = "Alice";
let age = 25;
let greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting); // "Hello, my name is Alice and I am 25 years old."
Boolean Typeλ
Όλ¦¬μ μΈ λ°μ΄ν° μ νμΌλ‘ ture νΉμ false κ°λ§ κ°μ§ μ μμ΅λλ€.
μνκ°(State): Booleanμ μ£Όλ‘ μ΄λ€ κ°μ²΄λ μμμ μνλ₯Ό λνλ΄λ λ° μ¬μ©λ©λλ€.
Flagκ°: νΉμ UIμ λ ΈμΆ μ¬λΆλ μ΄λ€ 쑰건μ λ§μ‘±νλμ§ μ¬λΆλ₯Ό λνλΌ λ flag λ³μλ₯Ό μ¬μ©ν©λλ€.
Undefined Typeλ³μ μ μΈ ν κ°μ΄ ν λΉλμ§ μμμ λ μλ°μ€ν¬λ¦½νΈμμ μλμΌλ‘ ν λΉλλ κΈ°λ³Έκ°μ λλ€.
undefinedλ‘ μ€μ λ©λλ€.
Null Typeκ°μ΄ μλ€λ κ²μ μλμ μΌλ‘ ννν λ μ¬μ©ν©λλ€.
μ΄μ μ μ°Έμ‘°λμλ κ°μ μλμ μΌλ‘ λμ΄μ μ°Έμ‘°νμ§ μκ² λ€λ λ»μΌλ‘λ μ¬μ©ν©λλ€.
nullμ undefinedμ λ€λ₯΄κ² μλμ μΈ λΉμ΄μμμ λνλ΄λ―λ‘, ===λ‘ λΉκ΅ν΄μΌ ν©λλ€.
Symbol TypeES6μ μΆκ°λ νμ μΌλ‘, μ€λ³΅λμ§ μλ μ λν¬ν κ°μ μμ±ν μ μμ΅λλ€.
κ°μ²΄μ νλ‘νΌν° ν€λ‘ μ¬μ©ν μ μμΌλ©°, λ€λ₯Έ κ°λ€κ³Ό μΆ©λνμ§ μλλ‘ λ³΄μ₯λ©λλ€.
μ λν¬ν κ°μ΄κΈ° λλ¬Έμ λ€λ₯Έ μ½λλ λΌμ΄λΈλ¬λ¦¬μμ μ¬μ©λ μ¬λ³Όκ³Ό μ λλ‘ μ€λ³΅λμ§ μμ΅λλ€.
μ£Όλ‘ λ΄λΆ μμ±μ λν κ³ μ ν ν€λ₯Ό μ 곡νλ λ° μ¬μ©λ©λλ€.
// μ¬λ³Όμ μ¬μ©νμ¬ κ³ μ ν ν€ λ§λ€κΈ°
const uniqueKey = Symbol('description');
const obj = {
[uniqueKey]: 'This is a unique symbol key',
};
console.log(obj[uniqueKey]); // "This is a unique symbol key"
// μ¬λ³Όμ νμ κ³ μ νλ―λ‘, λ€λ₯Έ κ³³μμ λμΌν μ΄λ¦μ μ¬λ³Όμ λ§λ€μ΄λ κ°μ λ€λ¦
λλ€.
const anotherKey = Symbol('description');
console.log(uniqueKey === anotherKey); // false
π€ ν€κ°μ
[]κ° λΆλ μ΄μ λ λκΉ?κ°μ²΄λ₯Ό μ μνλ μμ μ μ ν΄μ§μ§ μμ μμ±λͺ μ λμ μΌλ‘ μμ±νκΈ° λλ¬Έμ λλ€.
Object, Function, Date, Array, RegExp, Map, Set λ± μμ νμ
μ κ°μ μ μΈν λͺ¨λ κ²μ κ°λ¦¬ν΅λλ€.
μμ±λ€μ λ³κ²½ν μ μμ΅λλ€. (mutable value)
μ°Έμ‘° νμ μ μ λ¬ν λλ κ°μ΄ μλλΌ μ£Όμκ° μ λ¬λ©λλ€.
μ£Όμκ°μ μ€ν λ©λͺ¨λ¦¬μ μ μ₯λκ³ , ν λ©λͺ¨λ¦¬μ μ€μ λ°μ΄ν°(κ°μ²΄)κ° μ μ₯λ©λλ€.
μ°μ°μλ ννμ(κ°, λ³μ λ±)μ λμμΌλ‘ μ°μ°μ μννμ¬ νλμ κ°μ μμ±νλ κΈ°νΈμ λλ€.
typeof : κ°μ νμ
μ λνλ΄λ λ¬Έμμ΄ λ°νν©λλ€.
void : ννμμ νκ°νλ κ²°κ³Όλ₯Ό λ°ννμ§ μμ΅λλ€.
delete : κ°μ²΄μ μμ±μ μμ ν©λλ€.
++x : κ°μ΄ 1 μ¦κ°ν ν λ°νν©λλ€. (μ μ)
x++ : κ°μ λ°νν ν 1 μ¦κ°ν©λλ€. (νμ)
--x : κ°μ΄ 1 κ°μν ν λ°νν©λλ€. (μ μ)
x-- : κ°μ λ°νν ν 1 κ°μν©λλ€. (νμ)
+x : κ°μ μ«μλ‘ λ³νν©λλ€. (λ¬Έμμ΄ β μ«μ)
-x : κ°μ λΆνΈλ₯Ό λ°μ ν©λλ€.
+ : λ κ°μ λν©λλ€.
- : λ κ°μ λΊλλ€.
* : λ κ°μ κ³±ν©λλ€.
/ : λ κ°μ λλλλ€.
% : λλμ
ν λλ¨Έμ§λ₯Ό λ°νν©λλ€.
== : λ κ°μ΄ κ°μΌλ©΄ trueλ₯Ό λ°νν©λλ€. (νμ
λ³ν O)
=== : λ κ°κ³Ό νμ
μ΄ λͺ¨λ κ°μΌλ©΄ trueλ₯Ό λ°νν©λλ€. (νμ
λ³ν X)
!= : λ κ°μ΄ λ€λ₯΄λ©΄ trueλ₯Ό λ°νν©λλ€.
!== : λ κ°μ΄ λ€λ₯΄κ±°λ νμ
μ΄ λ€λ₯΄λ©΄ trueλ₯Ό λ°νν©λλ€.
> : μΌμͺ½ κ°μ΄ μ€λ₯Έμͺ½ κ°λ³΄λ€ ν¬λ©΄ trueλ₯Ό λ°νν©λλ€.
>= : μΌμͺ½ κ°μ΄ μ€λ₯Έμͺ½ κ°λ³΄λ€ ν¬κ±°λ κ°μΌλ©΄ trueλ₯Ό λ°νν©λλ€.
< : μΌμͺ½ κ°μ΄ μ€λ₯Έμͺ½ κ°λ³΄λ€ μμΌλ©΄ trueλ₯Ό λ°νν©λλ€.
<= : μΌμͺ½ κ°μ΄ μ€λ₯Έμͺ½ κ°λ³΄λ€ μκ±°λ κ°μΌλ©΄ trueλ₯Ό λ°νν©λλ€.
λ Όλ¦¬ μ°μ°μλ λΆλ¦¬μΈ κ° λλ νΉμ κ°μ λ°νν©λλ€.
&& : AND μ°μ° (첫 λ²μ§Έ κ°μ΄ falseλ©΄ κ·Έ κ°μ λ°ν)
|| : OR μ°μ° (첫 λ²μ§Έ κ°μ΄ falseλ©΄ λ λ²μ§Έ κ°μ λ°ν)
! : NOT μ°μ° (λΆλ¦¬μΈ κ°μ λ°μ )
, : μΌν μ°μ°μ, λ ννμ νκ° ν λ§μ§λ§ κ° λ°νν©λλ€.
" "+" " : λ¬Έμμ΄ μ°κ²° μ°μ°μ
? : μ΅μ
λ μ°μ°μ (obj?.prop), κ°μ²΄μ μμ±μ μ°Έμ‘° μμ μ ν¨νμ§ μλ κ²½μ°μλ undefinedλ₯Ό λ°νν©λλ€.
+=, -=, *=, /=, %= : ν λΉ μ°μ°μ, μ€λ₯Έμͺ½ νΌμ°μ°μκ° μΌμͺ½ νΌμ°μ°μμ κ°μ ν λΉν©λλ€.
&&=, ||= : λ
Όλ¦¬ μ°μ°κ³Ό ν λΉμ λμμ μνν©λλ€.
condition ? trueValue : falseValue : μΌν μ°μ°μ, 쑰건 μ°μ°μμ λ°λΌ λ κ° μ€ νλλ₯Ό λ°νν©λλ€.
μννΈμ¨μ΄μμ νΉμ λμμ μννλ μ½λ μΌλΆλΆμ μλ―Έν©λλ€.
μΌκΈ κ°μ²΄λ‘ λμν©λλ€.
ν¨μμ μ€μ λ§€κ°λ³μκ° λ μ μμ΅λλ€.
ν¨μμ λ°νκ°μ΄ λ μ μμ΅λλ€.
ν λΉλͺ λ Ήλ¬Έμ λμμ΄ λ μ μμ΅λλ€.
λμΌλΉκ΅μ λμμ΄ λ μ μμ΅λλ€. (κ°μΌλ‘ νν κ°λ₯)
// ν¨μλ μ€μ λ§€κ°λ³μκ° λ μ μλ€, ν¨μλ ν¨μμ λ°νκ°μ΄ λ μ μλ€.
function foo(arg) {
return arg;
}
function bar() {
console.log('bar');
}
foo(bar)(); // 'bar'
// ν¨μλ ν λΉλͺ
λ Ήλ¬Έμ λμμ΄ λ μ μλ€.
const foo1 = function (arg) {
return arg;
};
foo1(1); // 1μ λ°ν
// κΈ°λ³Έκ° λ§€κ°λ³μλ₯Ό λ£μ μ μλ€.
function foo2(arg = 1) {
console.log(arg);
}
foo2(); // '1'
// λλ¨Έμ§ λ§€κ°λ³μλ₯Ό λ£μ μ μλ€.
function foo3(arg, ...rest) {
console.log(rest);
}
foo3(1, 2, 3, 4); // [2, 3, 4]
// argument κ°μ²΄
function foo4(arg) {
console.log(arguments);
}
foo4(1, 2, 3, 4); // [Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }
// ν¨μ μ μΈλ¬Έ
function foo5() {
console.log('foo5');
}
foo5(); // 'foo5'
// ν¨μ ννμ
const foo6 = function () {
console.log('foo6');
};
foo6(); // 'foo6'
// Function μμ±μ ν¨μ
const foo7 = new Function("console.log('foo7')");
foo7(); // 'foo7'
// νμ΄ν ν¨μ ννμ
const foo8 = () => {
console.log('foo8');
};
foo8(); // 'foo8'
// IIFE (μ¦μ μ€ν ν¨μ)
(function foo9() {
console.log('foo9');
})();
// μ¬κ· ν¨μ
function foo10(arg) {
if (arg === 3) return;
console.log('foo10>>>>' + arg);
foo10(arg + 1);
}
foo10(1);
// μ€μ²© ν¨μ
function foo11(arg) {
function bar() {
console.log(arg);
}
bar();
}
foo11('foo11');
// μ½λ°± ν¨μ
function foo12(arg) {
arg();
}
foo12(() => {
console.log('foo12');
});
μλ°μ€ν¬λ¦½νΈμ λ€μν νΉμ§μ μ 리νλ©΄μ κ·Έλ₯ λκ²Όλ κ°λ λ€λ μ νν μκ² λμμ΅λλ€.
