μμ/μ°Έμ‘° μλ£ν, μ€μ½ν, ν΄λ‘μ
μμ μλ£νμ stack
μ κ°μ μ μ₯νμ§λ§, μ°Έμ‘° μλ£νμ heap
μ΄λΌλ λ³λμ λ©λͺ¨λ¦¬ μ μ₯ 곡κ°μ μ¬μ©νλ©° κ·Έ μ£Όμ κ°μ λ³μμ λ£λλ€. κ·Έλμ μ°Έμ‘° μλ£νμ μ λ³μκ° μλ λ€λ₯Έ λ³μμ λ£μ΄μ μμ νλλΌλ μλ³Έκ°μ΄ λ³κ²½λλ€. (λ°λ‘ κ°κΈ°μ λ°λ‘ κ°κΈ°λ§ 볡μ¬λλ κ°λ
)
const
λ λ³νμ§ μμμΌ νλ κ°μ ν λΉν΄μΌ ν λ μ΄λ€. μ¬ν λΉμ΄ λΆκ°λ₯νλ€.
Scope
: { } μμ λ²μ.
let | const | var | |
---|---|---|---|
μ ν¨ λ²μ | Block scope | Block scope | Function Scope |
κ° μ¬μ μ | κ°λ₯ | λΆκ°λ₯ | κ°λ₯ |
μ¬μ μΈ | λΆκ°λ₯ | λΆκ°λ₯ | κ°λ₯ |
var
λ κ°μ μ΄λ¦μΌλ‘ μ¬μ μΈμ΄ κ°λ₯νκΈ° λλ¬Έμ μ€λ₯λ₯Ό μΌμΌν¬ μ μλ€. let
μ¬μ©νκΈ°.
ν¨μ λ΄λΆμμ λ³μ μ μΈ μμ΄ κ°μ ν λΉν κ²½μ° μ μ λ³μμλ μν₯μ μ€ μ μκΈ° λλ¬Έμ μ μΈ μμ΄ μ¬μ©νμ§ λ§ κ². μ€μλ₯Ό λ°©μ§νλ κΈ°λ₯μ μ¬μ©νκ³ μΆμ κ²½μ° Strict Mode
μ μ©. μ½λ κ°μ₯ μλ¨μ'use strict';
μ°Έμ‘° μλ£νμ ===
(strict equality)λ μ£Όμ κ°μ΄ κ°μμ§λ₯Ό νμΈνλ€. κ·Έλ κΈ° λλ¬Έμ console.log([1,2,3] === [1,2,3]); μ κ²°κ³Όλ falseκ° λμ¨λ€. λ°°μ΄([])κ³Ό κ°μ²΄({}) λ± μ°Έμ‘° μλ£νμ μ½μ λ, 미리 μ£Όμ κ°κ³Ό λ©λͺ¨λ¦¬κ°μ μ‘μλλ€κ³ μκ°νμ. κ·Έλ¬λ―λ‘ [] === []
λ trueκ° λμ€μ§ μλλ€.
...something
rest parameter, spread syntaxλΌκ³ λΆλ₯Έλ€. ν¨μμ μΈμ λΆλΆμ μΈ μ μλ€. (function someWork(...args)) λͺ¨λ μΈμλ₯Ό νΌμ³μ λ°°μ΄μ λ΄λλ€. (λ°°μ΄μ κ°μΌλ‘ λ£μ΄λ νΌμΉκΈ° λλ¬Έμ λ°°μ΄ μμ λ°°μ΄μ΄ μλ νλμ λ°°μ΄μ΄ λλ€. μλ μ°Έκ³ .) MDN μ κ° κ΅¬λ¬Έ
let arr = ['code', 'states']
let value = [
...arr,
'pre',
...['course', 'student']
]
// value κ°
['code', 'states', 'pre', 'course', 'student']
Closure
: μΈλΆ ν¨μμ λ³μμ μ κ·Όν μ μλ λ΄λΆ ν¨μ. λλ, μ΄λ¬ν μλ μ리. λ³μμ κ°κ° μ μ₯ν΄ μ¬μ©ν κ²½μ° μ¬μ¬μ©μ΄ μ©μ΄νλ€. MDN ν΄λ‘μ
<tag>
, </tag>
μ κ°μ΄ λ³μ tagλ₯Ό μ
λ ₯ν νκ·Έλ₯Ό νμ±νλ ν¨μμ΄κ³ , λ΄λΆ ν¨μλ μΈλΆ ν¨μμμ νμ±ν νκ·Έλ₯Ό μ
λ ₯ν λ¬Έμμ΄ μλ€μ λΆμ¬μ£Όλ κΈ°λ₯. μ¬μ©ν λλ μΈλΆ ν¨μλ§ λ³μμ ν λΉν΄ μ¬μ©νλ€. let tagMaker = html Maker('tag')
, tagMaker()
)return {function1: function() { }, {function2: function() { }}
μ²λΌ ν¨μλ₯Ό λ΄μ κ°μ²΄λ‘ μ€μ , λ³μμ μΈλΆ ν¨μλ₯Ό ν λΉνκ³ λ³μμ΄λ¦.function1()
λ‘ μ κ·Όν΄ μ¬μ©νλ€.)κ°μ²΄μ λν΄ μ΄λ μ λ μμ§νλ€κ³ μκ°νλλ°, λ§μ μ½νλ¦ΏμΌλ‘ κ³Όμ λ₯Ό ν΄λ³΄λ νμ© λ₯λ ₯μ΄ ννΈμμλ€. μ΄λ»κ² λ μ°μ΅ν΄λ³Ό μ μμκΉ? π€ obj[key]
ννκ° κ°μ μλ―Ένλ€λ κ±Έ 머리λ‘λ μκ³ μλλ° μ¬λ¬ μλ£νμ μμ΄μ μΈ λλ κ°μ²΄λ λΆλ¦¬ν΄μ μ¬μ©ν μ μλ€λ μΈμμ΄ λ°νλ²λ¦° κ² κ°λ€. (μλ§ κ°μ²΄λ κ°μ λͺ¨λ νμΈνλ €λ©΄ for...in
λ§ μ¨μΌ νλ€λ μ¬μ€μ λ무 μ¬λ‘μ‘ν λ―.) μΌλ¨ for
λ¬Έ 루νλ‘ obj[str[i]] += 1
νμμΌλ‘ μ κ·Όν΄λ κ°μ μ‘°μ ν μ μλ€λ κ² κΈ°μ΅ν΄λκΈ°. (κ°μ²΄ 21λ² μ¬λ¬ λ² λ³΅μ΅!)