μ΄ λ³Έλ¬Έμ μλ°μ€ν¬λ¦½νΈ ν¨μμ κ°λ μ λ€λ£Ήλλ€πͺπΌ
λ³Έλ¬Έμ μμνκΈ°μ μμ μλ°μ€ν¬λ¦½νΈμ 리ν°λ΄κ³Ό ννμμ λν κ°λ μ κ°λ¨ν μ 리νκ³ μ νλ€.
리ν°λ΄(Literal)
μ¬λμ΄ μ΄ν΄ν μ μλ
λ¬Έμ λλ μ½μλ κΈ°νΈλ₯Ό μ¬μ©νμ¬ κ°μ μμ±νλ νκΈ°λ²
μ λ§νλ€.
// number literal 3
123;
μ΄ μμ μ 123μ λ¨μν μ«μκ°μ΄ μλ μ«μ 리ν°λ΄μ΄λ€. μ¬λμ΄ μ΄ν΄ν μ μλ μλΌλΉμ μ«μ ννμ μ¬μ©ν΄ μ«μ 123μ μ½λμ κΈ°μ νλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ΄λ₯Ό μ«μκ° 123μΌλ‘ νκ°νλ€.
μ¦, μ¬λμ΄ μ΄ν΄ν μ μλ ννμ μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ κ°μ μμ±νλ κ²μ΄λ€.
μλμμ λ€μ μΈκΈνκ² μ§λ§, μλ°μ€ν¬λ¦½νΈλ ν¨μλ₯Ό νλμ κ°μ²΄λ‘ μ μνλ€.
μ¦, κ°μ²΄ 리ν°λ΄λ‘ κ°μ²΄λ₯Ό μμ±νλ κ²μ²λΌ ν¨μ 리ν°λ΄λ‘ ν¨μλ₯Ό μμ±ν μ μκ³ μ΄λ νλμ κ°μ²΄(κ°)μΌλ‘ μ²λ¦¬λλ€.
μ΄ μ μ κΈ°μ΅ν΄λμ.
ννμ(Expression)
ννμμ ν΅μ¬μ κ°μ μμ±νλ λ¬Έ
μ΄λΌλ μ μ΄λ€. ννμμ΄ νκ°λλ©΄ λ°λμ μλ‘μ΄ κ°μ μμ±νκ±°λ κΈ°μ‘΄μ κ°μ μ°Έμ‘°νκ² λλ€.
123
μ«μ 리ν°λ΄μ μ«μκ°μ μμ±νλ€. μ΄λ κ°μ μμ±νλ ꡬ문μ΄λ―λ‘ ννμμ΄λ€.var score = 50 + 50;
μ«μ 리ν°λ΄κ³Ό μ°μ°μλ‘ μ΄λ£¨μ΄μ§ 50+50μ μ«μκ° 100μ μμ±νλ―λ‘ μμ ννμμ΄λ€.score; // 100
μ΄ κ΅¬λ¬Έμ μ«μκ° 100μ μ°Έμ‘°νλ€. κ°μ μμ±νμ§λ μμ§λ§ κ°μΌλ‘ νκ°λλ―λ‘ ννμμ΄λ€.
ννμμ κ°μΌλ‘ νκ°λλ€. μ΄ λ§μ κ°κ³Ό λμΌνκ² μ¬κ²¨μ§λ€λ λ§μ΄λ€.
κ°μ΄ μμΉν μ μλ μ리μλ ννμλ μμΉν μ μλ€λ μ μ΄λ€.
μ΄λ₯Ό νμ©νλ©΄ ννμμΈ λ¦¬ν°λ΄μ΄ ꡬ문(statement)μ κ° μ리μ μμΉν μλ μκ² λλ€.
μ΄ ν₯λ―Έλ‘μ΄ κ°λ μ΄ μλ°μ€ν¬λ¦½νΈμ ν¨μ κ°λ μ μ μ©λμ΄ μ λ°ν ννμ κ°λ₯νκ² νλ€.
ν¨μ(Function)
μμμ μΈκΈν κ²μ²λΌ μλ°μ€ν¬λ¦½νΈμμ ν¨μλ κ°μ²΄ νμ
μ κ°
μ΄λ€. λ°λΌμ μ«μ 리ν°λ΄λ‘ μ«μκ°μ μμ±νλ κ²μ²λΌ ν¨μ 리ν°λ΄λ‘ ν¨μλ₯Ό μμ±ν μ μκ³ , μ΄λ₯Ό λ³μμ ν λΉν μλ μλ€. ν¨μκ° κ°μ²΄λΌλ μ¬μ€μ μλ°μ€ν¬λ¦½νΈλ§μ μ€μν νΉμ§
μ΄λ€.
var func = function add(x, y) {
return x + y;
}
μμ μ½λλ ν¨μ ννμ
μ΄λΌκ³ μ μνλ€. ν¨μ 리ν°λ΄μ ν΅ν΄ ν¨μ κ°μ²΄(κ°)λ₯Ό μμ±
νκ³ , μ΄λ₯Ό λ³μμ ν λΉνλ κ²μ΄λ€.
ν¨μ 리ν°λ΄ ννμμ ν¨μ κ°μ²΄λ₯Ό μμ±νλ€λ μ μ μ΄μ©νλ©΄ μ΄λ° syntax sugarλ κ°λ₯νλ€πΎ
(function func() {return 10;}) // ƒ func() {return 10;}
κ·Έλ£Ή μ°μ°μμ νΌμ°μ°μλ‘ ν¨μ 리ν°λ΄μ μ λ¬νλ μ½λμ΄λ€.
μ΄ κ΅¬λ¬Έμ ν¨μ μ μΈλ¬Έμ΄ μλ ν¨μ ννμμΌλ‘ νκ°λκ³ , ν¨μ κ°μ²΄λ₯Ό μμ±νκ² λλ€. ν¨μ ννμμ μλμ κ°μ΄ λμ± κ°λ¨νκ² λ§λ€ μλ μλ€.
// ν¨μ μ μΈλ¬Έμ΄ μλ ν¨μ ννμμ ν¨μ μ΄λ¦(μλ³μ)μ μλ΅ν μ μλ€.
// μ΄ ν¨μ 리ν°λ΄μ κ°μΌλ‘ νκ°λλ ννμμΌλ‘ νκ°λλ―λ‘ λ€μκ³Ό κ°μ ννλ κ°λ₯νλ€.
(function () {return 10;}) // ƒ () {return 10;}
// ES6μ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ©΄ λ κ°λ¨νκ² ν μ μλ€.
(() => {return 10;}) // () => {return 10;}
μ΄λ₯Ό λ νμ©νλ©΄, ν¨μλ₯Ό μ¦μ μ€νμν€λ μ½λλ‘ λ§λ€ μ μλ€.
μ¦μ μ€ν ν¨μ(IIFE: Immediately Invoked Function Expression)λΌκ³ λΆλ₯Έλ€.
// λ κ°μ§ λͺ¨λ κΈ°λ₯μ λμΌνμ§λ§, 첫 λ²μ§Έ λ°©μμ λ λ§μ΄ μ¬μ©νλ€.
(function func() {return 10;}()); // 10
(function func() {return 10;})(); // 10
// μΈμλ₯Ό μ λ¬νμ¬ μ¬μ©ν μλ μλ€.
res = (function (a, b) {
return a * b;
}(3, 5)); // 15
λ§λ¬΄λ¦¬
μλ°μ€ν¬λ¦½νΈμμ λ³μμ ν¨μλ₯Ό κ°μΌλ‘ ν λΉν μ μλ μ΄μ λ ν¨μ
κ° νλμ κ°μ²΄
λ‘ μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€.
λ°λλΌ μλ°μ€ν¬λ¦½νΈλ₯Ό 곡λΆνλ©΄μ μΈμ΄μ νΉμ§μ λμ± κΉκ² μ΄ν΄νκ² λλ κ² κ°λ€. λ½μ€π₯π₯
Reference
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive 12μ₯ ν¨μ
'Languages > JavaScript π' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] μλ°μ€ν¬λ¦½νΈ μμ κ°κ³Ό κ°μ²΄(Immutability, Mutability) (0) | 2021.12.06 |
---|---|
[JS] λ³μ νΈμ΄μ€ν (Hoisting)μ λνμ¬ (0) | 2020.02.19 |