- boolean, number, string, symbol, undefined, null λ‘ 7κ°μ§κ° μμ΅λλ€.
- undefined λ μ μΈ ν
μ΄κΈ°νλμ§ μμ λ³μμ κ°
μ΄κ³ , null μ κ°λ°μκ°λ³μμ κ°μ΄ μλ€λ κ²μ λͺ μνκΈ° μν΄
μλμ μΌλ‘ μ¬μ©νλ κ°μ λλ€.
- λͺ¨λ μμνμ
μ
immutable
νκΈ° λλ¬Έμ λ³κ²½μ΄ λΆκ°λ₯νλ―λ‘ κ°μ΄ μ λ¬λ λ 볡μ¬νμ¬ μ λ¬νλcall-by-value
λ₯Ό μ¬μ©ν©λλ€. μμνμ μ μ μΈν λͺ¨λ λ°μ΄ν°λ€μ νμ μΈ κ°μ²΄νμ μcall-by-reference
λ‘ μ λ¬λλ©° κ°μ λ³κ²½μ΄ κ°λ₯ν©λλ€.
-
let
μΌλ‘ μ μΈλ λ³μλ κ°μ μ¬ν λΉν μ μμ§λ§const
λ‘ μ μΈλ λ³μλ₯Ό κ°μ μ¬ν λΉν μ μμ΅λλ€.var
λν λ³μλ₯Ό μ¬ν λΉ ν μ μμ΅λλ€. -
μ ν¨λ²μμ λν μ°¨μ΄λ μμ΅λλ€.
var
λ ν¨μ λ΄μμλ§ μ§μλ³μλ‘ μ·¨κΈλκ³ λλ¨Έμ§ μ€μ½νμμλ λͺ¨λ μ μλ³μλ‘ μ·¨κΈλ©λλ€.let
κ³Όconst
λ λΈλ‘ λ΄μμλ§ μ¬μ©κ°λ₯ν μ§μλ³μλ‘ μ·¨κΈλ©λλ€.
- μ€ν 컨ν μ€νΈλ μ€νν μ½λμ λν μ 보λ₯Ό λͺ¨μλ κ°μ²΄μ λλ€.
- λ¨Όμ μλ‘μ΄ ν¨μκ° μ€νλλ©΄ μ€ν컨ν
μ€νΈκ° μμ±λκ³
νμ± κ°μ²΄
κ° μμ±λ©λλ€. - νμ±κ°μ²΄κ° μμ± λλ©΄
arguments
μ μ¬λ°°μ΄κ°μ²΄λ₯Ό μμ±ν©λλ€. ν¨μμ μΈμκ° λλ λ³μλ€μ΄ μ΄κ³³μ μ μ₯λ©λλ€. - λ€μμ
μ€μ½ν μ 보
λ₯Ό μμ±ν©λλ€. μ€μ½ν μ 보λ νμ¬ μ€ν 컨ν μ€νΈμ μ ν¨ λ²μλ₯Ό λνλ λλ€. - μ€μ½ν μ 보λ₯Ό μμ±νλ©΄
λ³μ
λ₯Ό μμ±νκ³ κ°μ μ΄κΈ°ν ν©λλ€. μ΄λ μ΄κΈ°ν λμ§ μμ κ°μundefined
λ‘ μ΄κΈ°νλ©λλ€. - λ§μ§λ§μΌλ‘
this
ν€μλλ₯Ό μ¬μ©νλ λ³μμ κ°λ€μ ν λΉν©λλ€.
μ€μ½ν 체μ΄λ
μ μ€ν 컨ν μ€νΈμμ νμ¬ νμ± κ°μ²΄κ° μμ μ΄ κ°μ§κ³ μμ§ μμ λ³μλ₯Ό λ€λ₯Έ μ€ν 컨ν μ€νΈμ νμ± κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ μ κ·Όνλ λ°©λ²μ λλ€.- μλ‘μ΄ μ€ν 컨ν μ€νΈκ° λ§λ€μ΄μ§ λλ§λ€ μμ±λλ νμ± κ°μ²΄λ μμ μ΄ λ§λ€μ΄μ§κΈ° μ μ€ν 컨ν μ€νΈμ μ€μ½ν 체μΈμ 볡μ¬νκ³ κ°μ₯ μμ μμ μ νμ± κ°μ²΄λ₯Ό μΆκ°ν©λλ€.
- λ³μκ° μ°Έμ‘°λ λ μ€ν 컨ν μ€νΈ λ΄μ νμ± κ°μ²΄μ μ€μ½ν 체μΈμ νμΈνκ³ μμμλΆν° μ μκ°μ²΄κΉμ§ ν΄λΉ λ³μκ° μ‘΄μ¬νλμ§ μ°¨λ‘λλ‘ νμΈν©λλ€.
- νλ‘ν νμ μ Prototype Link μ Prototype Object λ‘ κ΅¬λΆλ©λλ€.
- Prototype Objectλ κ°μ²΄(ν¨μ)κ° μ μλ λ ν¨κ» μμ±λλ μν κ°μ²΄λ‘ μμ±μλ₯Ό κ°μ§λλ€. λ΄λΆμλ constructor μ
__proto__
μμ±μ΄ μ‘΄μ¬νκ³__proto__
μμ±μ΄ κΈ°μ‘΄ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ² λ©λλ€. μ¦, μμ μ μμ±ν μ‘°μ κ°μ²΄λ₯Ό κ°λ₯΄ν΅λλ€. __proto__
μμ±μΌλ‘ μμ μ μ‘°μμ΄ λλ κ°μ²΄λ₯Ό κ°λ₯΄ν΅λλ€. λ§μ½ μ΄λ€ κ°μ²΄κ° μμ μ΄ κ°μ§κ³ μμ§ μμ μμ±μ μꡬλ°μΌλ©΄__proto__
μμ±μ νκ³ μ°κ²°λ μμ κ°μ²΄λ‘ μ κ·Όνμ¬ κ°μ΄ μ‘΄μ¬νλμ§ νμΈν©λλ€. μ΄κ²μνλ‘ν νμ 체μ΄λ
μ΄λΌκ³ ν©λλ€.
- μλ°μ€ν¬λ¦½νΈμμ this λ λ©μλ νΈμΆκ³Ό, ν¨μ νΈμΆμμ λ€λ₯Έ λμμ μ·¨ν©λλ€.
- λ©μλ νΈμΆμ μ¬μ©λλ this λ ν΄λΉ λ©μλλ₯Ό νΈμΆν κ°μ²΄μ λ°μΈλ©λ©λλ€.
- ν¨μ νΈμΆμ μ¬μ©λλ this λ ν΄λΉ ν¨μλ₯Ό μ μκ°μ²΄μΈ windowμ λ°μΈλ©ν©λλ€.
- new ν€μλλ‘ μμ±μ ν¨μλ₯Ό νΈμΆνλ©΄ this λ λ§λ€μ΄μ§ κ°μ²΄ μκΈ°μμ μ λ°μΈλ©ν©λλ€.
Lexical Scope
λ ν¨μλ₯Ό μ μΈνμ λ μ€μ½νκ° μμ±λλ κ²μ μλ―Έν©λλ€. μ μ μ€μ½νκ° μκΈ° λλ¬Έμ ν΄λ‘μ μ νΈμ΄μ€ν μ΄ κ°λ₯ν©λλ€.
- ν΄λ‘μ λ ν¨μκ° μμ μ λΈλ‘ λ΄λΆκ° μλ μΈλΆ μ€μ½νμ μ μΈλ λ³μμ μ κ·Όνλ κ²μ μλ―Έν©λλ€.
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
example from MDN
- μ μμμμ displayNameμ λ°ννκ³ μ΄νμ νΈμΆν λ, displayNameμ lexicalν μ 보λ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ μμ μ λ΄λΆμ μλ name μ λν κ°μ΄ μ‘΄μ¬νμ§ μμλ μμ ν¨μμ μλ "Mozilla" λΌλ κ°μ μ¬μ©ν©λλ€.
- νΈμ΄μ€ν μ λͺ¨λ λ³μ μ μΈμ μ΅μλ¨μΌλ‘ λμ΄μ¬λ¦¬λ κ²μ μλ―Έν©λλ€. μ μ λ²μμ μλ λ³μλ μ€ν¬λ¦½νΈ μ΅μλ¨μΌλ‘ μ¬λΌκ°κ³ , ν¨μ λ²μμ μλ λ³μλ ν¨μ λ΄μ μ΅μλ¨ μμΉλ‘ μ¬λ €μ§λλ€. μ΄λ μ΄κΈ°ν κ°μ νΈμ΄μ€ν λμ§ μκ³ μ μΈλ§ νΈμ΄μ€ν λ©λλ€.
- μ΄λ²€νΈ μμμ μ΄λ€ νκ·Έμ μμ νν¬μ μ΄λ²€νΈ 리μ€λλ₯Ό λ±λ‘νμ¬ νμ νκ·Έλ€μ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ κ²μ λ§ν©λλ€. μλ₯Ό λ€μ΄ ul li νκ·Έλ‘ μ΄λ£¨μ΄μ§ λͺ©λ‘μ΄ μμ λ, κ° li νκ·Έμ λν΄ λͺ¨λ ν΄λ¦μ΄λ²€νΈλ₯Ό μ²λ¦¬νκ³ μΆλ€λ©΄ ul νν¬μ μ΄λ²€νΈ μμμ νλ©΄ μ΄λ²€νΈ 리μ€λλ₯Ό ν λ²λ§ λ±λ‘νλ κ²μΌλ‘ μ΄λ²€νΈλ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
- μ΄λ²€νΈ λ²λΈλ§μ μ΄λ²€νΈκ° λ°μνμ λ, μ΅μμ νκ·Έλ‘ μ΄λ²€νΈκ° μ λ¬λλ νΉμ±μ μλ―Έν©λλ€.
- μ΄λ²€νΈ μΊ‘μ³λ§μ μ΄λ²€νΈ λ²λΈλ§κ³Ό λ°λλ‘ μ΅μμ νν¬μμ νμ νκ·ΈκΉμ§ μ΄λ²€νΈλ₯Ό μμ°¨μ μΌλ‘ μ λ¬νλ κ²μ μλ―Έν©λλ€. addEventListner()μ μΈλ²μ§Έ μΈμλ₯Ό trueλ‘ μ§μ νλ κ²μΌλ‘ μ€μ ν μ μμ΅λλ€.
- Throttleμ μ΄λ€ ν¨μκ° νΈμΆλ μ΄νμλ μΌμ μκ° λμ ν΄λΉ ν¨μκ° λ€μ νΈμΆλμ§ μλλ‘ ν©λλ€.
- Debounceλ νΉμ μκ°λ΄μ λ°μν λμΌν μ΄λ²€νΈλ₯Ό κ·Έλ£Ήννμ¬ μ΅μ΄μ μ΄λ²€νΈλ λ§μ§λ§ μ΄λ²€νΈλ§ μ€ννλλ‘ ν©λλ€.
- μ€ν¬λ‘€μ΄λ μ°½ ν¬κΈ° μ‘°μ κ³Ό κ°μ μ΄λ²€νΈ μ²λ¦¬ ν¨μκ° μ νμμ΄ μ€νλλ©΄ μ¬μ©μκ° μ‘°κΈλ§ μμ§μ¬λ μλ§μ ν¨μκ° νΈμΆλ©λλ€. λμΌν ν¨μλ νλ²λ§ μ€ννλλ‘ νμ¬ λ¦¬μμ€λ₯Ό μλ μ μμ΅λλ€.
- μλ°μ€ν¬λ¦½νΈλ λλ¬κ°λ₯μν(Reachability)λ₯Ό νμΈν΄μ μ΄λ€ κ°μ²΄κ° λ³μμ μν΄ μ°Έμ‘°λ μ μλ μνκ° μλλΌλ©΄ ν΄λΉ κ°μ²΄λ₯Ό κ°μ ν©λλ€.
- κ°λΉμ§ 컬λ ν°λ λ³μμ κ°μ 루νΈλ₯Ό μ€μ νκ³ λ£¨νΈλ‘λΆν° λλ¬ν μ μλ λͺ¨λ κ°μ²΄λ₯Ό λ°©λ¬Ένμ¬ λ§νΉμ ν©λλ€. λ§μ½ λ§νΉλμ§ μμ κ°μ²΄λ€μ΄ μλ€λ©΄ unreachable μ΄ λμ΄ μμ ν©λλ€.