λ₯ λ€μ΄λΈ κΈ°λ‘μ μ€μ§νκΈ°λ‘ κ²°μ . λ€μ΄κ°λ μκ°μ΄ λ무 λ§κ³ ν¨μ¨μ΄ λ¨μ΄μ§λ€. μ½κΈ°λ νλ μ€μν ν¬μΈνΈλ§ μ‘μμ javaScriptμΉ΄ν
κ³ λ¦¬μ κΈ°λ‘.
Deep Dive μ 볡기π©
- μ°μ°μλ? μ°μ°μλ νλ μ΄μμ ννμμ λμμΌλ‘ μ°μ , ν λΉ, λΉκ΅, λ
Όλ¦¬, νμ
, μ§μ μ°μ° λ±μ μννμ¬ νλμ κ°μ λ§λ λ€. μ΄λ μ°μ°μ λμμ νΌμ°μ°μλΌ νλ€. νΌμ°μ°μλ κ°μΌλ‘ νκ°λ μ μλ ννμ μ΄μ΄μΌ νλ€. νΌμ°μ°μμ μ°μ°μμ μ‘°ν©μΌλ‘ μ΄λ€μ§ μ°μ°μ ννμλ κ°μΌλ‘ νκ°λ μ μλ ννμμ΄λ€. ex) ννμμ΄λ? κ°μΌλ‘ νκ°λ μ μλ λ¬Έμ λ§νλ€. - μ°μ μ°μ°μ μ°μ μ°μ°μλ νΌμ°μ°μλ₯Ό λμμΌλ‘ μνμ κ³μ°μ μνν΄ μλ‘μ΄ μ«μ κ°μ λ§λ λ€. μ°μ μ°μ°μ΄ λΆκ°λ₯ν κ²½μ° NaNμ λ°ννλ€. (Not a Number) μ°μ μ°μ°μλ νΌμ°μ°μμ κ°μμ λ°λΌ μ΄ν μ°μ μ°μ°μ, λ¨ν μ°μ μ°μ°μλ‘ κ΅¬λΆνλ€. μ΄ν μ°μ μ°μ°μ 2κ°μ νΌμ°μ°μλ₯Ό μ°μ μ°μ°νμ¬ κ°μ λ§λ λ€. μ΄ν μ°μ μ°μ°..
μλ°μ€ν¬λ¦½νΈ μΈμ΄ μλ°μ€ν¬λ¦½νΈλ λμ νμ΄ν νΉμ§μ κ°μ§κ³ μκ³ λμ νμ
μΈμ΄λΌ νλ€. λμ νμ
μΈμ΄λ λ³μμ νμ
μ μ μΈμ΄ μλ ν λΉμμ κ²°μ (νμ
μΆλ‘ ) μ΄ λκ³ μ¬ν λΉμ μν΄ λ³μμ νμ
μ μΈμ λ μ§ λμ μΌλ‘ λ³ν μ μλ€. λ°μ΄ν° νμ
μ μ’
λ₯ μλ°μ€ν¬λ¦½νΈλ μ΄ 7κ°μ λ°μ΄ν° νμ
μ μ 곡νκ³ κ·Έμ€ μμ νμ
(primitive type)κ³Ό κ°μ²΄ νμ
(object/reference type)μΌλ‘ λΆλ₯λλ€. μμ νμ
: number(μ«μ), string(λ¬Έμμ΄), boolean(μ°Έ, κ±°μ§), undefined(μλ£ν λ―Έμ€μ ), null(κ°μ΄ μμ), Symbol(ES6μμ μΆκ°λ νμ
) κ°μ²΄ νμ
: κ°μ²΄{ }, λ°°μ΄[ ], ν¨μ λ±.. Number (μ«μ) λ€λ₯Έ μΈμ΄λ μ μμ μ€μλ₯Ό ꡬλΆν΄ int..
κ°(value) κ°μ μ(ννμ)μ΄ νκ°λμ΄ μμ±λ κ²°κ³Όλ€. (νκ°λ μμ ν΄μνμ¬ κ°μ μμ±νκ±°λ μ°Έμ‘° νλ κ²μ μλ―Έ) λͺ¨λ κ°μ λ°μ΄ν° νμ
μ κ°μ§λ©° λ©λͺ¨λ¦¬μ 2μ§μ, λΉνΈμ λμ΄λ‘ μ μ₯λλ€. λ©λͺ¨λ¦¬μ μ μ₯λ κ°μ λ°μ΄ν° νμ
μ λ°λΌ λ€λ₯΄κ² ν΄μλλ€. (ex : 0100 0001 μ μ«μλ‘ ν΄μνλ©΄ 65, λ¬Έμλ‘ ν΄μνλ©΄ 'A') κ°μ λ€μν λ°©λ²μΌλ‘ μμ±ν μ μλ€. ( 리ν°λ΄, μ λ±) 리ν°λ΄(literal) 리ν°λ΄μ μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ λλ μ½μλ κΈ°νΈλ₯Ό μ¬μ©ν΄ κ°μ μμ±νλ νκΈ°λ²μ΄λ€. μλ°μ€ν¬λ¦½νΈλ μ½λκ° μ€νλλ μμ μΈ λ°νμμ 리ν°λ΄μ νκ°ν΄ κ°μ μμ±νλ€. ννμ(expression) ννμμ κ°μΌλ‘ νκ°λ μ μλ λ¬Έ μ΄λ€. let score = 50 + 50; 50 + 5..
μλ³μλ? μλ³μλ μ΄λ ν κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λ§νλ€. (λ³μλͺ
, ν¨μλͺ
λ±) μλ³μ λ€μ΄λ° κ·μΉ let test; // O let $test; // O let _test; // O let 1test; // X μ«μλ‘ μμ let &test; // X νΉμλ¬Έμ μ¬μ© let test!!!; // X νΉμλ¬Έμ μ¬μ© let this; // X μμ½μ΄ μ¬μ© μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ₯Ό ν¬ν¨ν μ μλ€. λ¨, μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ‘ μμν΄μΌ νλ€. μ«μλ‘ μμνλ κ²μ X μμ½μ΄λ μλ³μλ‘ μ¬μ©ν μ μλ€. μμ½μ΄λ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©νλ λ¨μ΄λ₯Ό λ§νλ€. λ€μ΄λ° 컨벀μ
λ€μ΄λ° 컨벀μ
μ νλ..
μ΄κΈ°νλ ? μ΄κΈ°νλ λ³μκ° μ μΈλκ³ μ΅μ΄λ‘ κ°μ ν λΉνλ κ²μ λ§νλλ°, μ΄ μ΄κΈ°ν λ¨κ³λ₯Ό κ±°μΉμ§ μμΌλ©΄ ν보λ λ©λͺ¨λ¦¬ 곡κ°μλ μ΄μ μ λ€λ₯Έ μ ν리μΌμ΄μ
μ΄ μ¬μ©νλ κ°μ΄ λ¨μμμ μ μκ³ μ΄ κ°μ μ°λ κΈ° κ°(garbage value)μ΄λΌ νλ€. λ°λΌμ λ©λͺ¨λ¦¬ 곡κ°μ ν보ν ν κ°μ ν λΉνμ§ μκ³ κ³§λ°λ‘ λ³μ κ°μ μ°Έμ‘°νλ©΄ μ°λ κΈ° κ°μ΄ λμ¬ μ μλ€. var varμ ES6μμ let, const ν€μλκ° μκΈ°κΈ° μ΄μ κΉμ§ μ μΌν λ³μμ μΈ ν€μλμλ€. μ΄λ° varμλ μ¬λ¬λ¨μ μ΄ μλλ° κ·Έ μ€ λνμ μΈκ±΄ λΈλ‘ λ 벨 μ€μ½νκ° μλ ν¨μ λ 벨 μ€μ½νμ΄κΈ° λλ¬Έμ΄λ€. μ΄λ° ν¨μ λ 벨 μ€μ½νλ μκ°μΉ λͺ»ν μ€λ₯λ‘ μ΄μ΄μ§ μ μλ€. var score; //λ³μ μ μΈ ν΄λΉ μ½λλ λ³μλ₯Ό μ μΈλ§ ν μνμ΄λ€. λ³μμ κ°μ..
μλ°μ€ν¬λ¦½νΈ μμ§μ μ°μ° κ³Όμ π» μ°μ μλ°μ€ν¬λ¦½νΈμ 10 + 20 μ μ§νν λμ μμλΆν° μμ보μ. μλ°μ€ν¬λ¦½νΈ μμ§μ 10 + 20 μ΄λΌλ μ½λλ₯Ό κ³μ°ν λ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν΄ λ°μ΄ν°λ₯Ό κΈ°μ΅νκ³ , CPUλ₯Ό μ¬μ©ν΄ μ°μ°μ μ§ννλ€. λ©λͺ¨λ¦¬λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬ μ
μ μ§ν©μ²΄μ΄λ©° λ©λͺ¨λ¦¬ μ
νλμ ν¬κΈ°λ 1λ°μ΄νΈ(8λΉνΈ), μ¦ 1λ°μ΄νΈ λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯, λλ μ½λ μμ
μ νλ€. μ»΄ν¨ν°λ ν΄λΉ λ°μ΄ν°κ° ν
μ€νΈ, μ΄λ―Έμ§, μ«μ 무μμ΄ λμλ λͺ¨λ μμ
μ 2μ§μλ‘ μ²λ¦¬νκ³ μ μ₯νλ€. μ¦, 10 + 20 μ λ©λͺ¨λ¦¬ μμ μμμ μμΉμ μ μ₯νκ³ CPUλ μ΄ κ°μ μ½μ΄ μ°μ°μ μ§νν ν λ©λͺ¨λ¦¬ μμ μμμ μμΉμ κ²°κ³Όκ°λ μ μ₯νλ€. μ΄? κ²°κ³Όκ°μΈ 30μ μ΄μ©νκ³ μΆμλ°... π μ΄λ μ΄μ©ν μ μλκ² λ°λ‘..
β» ν΄λΉ Deep Dive κΈμ μλ°μ€ν¬λ¦½νΈμ μ리μ κ°λ
λ±μ μ±
μ ν΅ν΄ 곡λΆνλ©° λ€μ νλ² λ³΅κΈ°νκΈ° μν΄ μ λ κΈμ΄λ―λ‘ μ±
μ νλ¦μ λ°λΌ μ κ²λ¨μ μλ €λ리며 λ¨μ΄μ λν (ex: νλ‘ν νμ
, κ°μ²΄μ§ν₯) μ€λͺ
μ μ΄ ν ν΄λΉ νλͺ©μ΄ λμ¬λ μμΈνκ² μ κ³ μ¬μ©ν΄ λ³Ό μμ μ
λλ€. JavaScript πͺ ECMAScriptλ μλ°μ€ν¬λ¦½νΈμ νμ€ μ¬μμΈ ECMA-262λ₯Ό λ§νλ©°, νλ‘κ·Έλλ° μΈμ΄μ κ°, νμ
, κ°μ²΄μ νλ‘νΌν°, ν¨μ, νμ€ λ΄μ₯ κ°μ²΄ λ± ν΅μ¬ λ¬Έλ²μ κ·μ νλ€. μ¦, μλ°μ€ν¬λ¦½νΈλ νλ‘κ·Έλλ° μΈμ΄λ‘μ ECMAScriptμ λΈλΌμ°μ κ° λ³λ μ§μνλ DOM,BOM, Canvas, XML, fetch λ±μ μμ°λ₯΄λ κ°λ
μ΄λ€. κ΅μ₯ν λ§μ λ΄μ₯ κ°μ²΄μ μΉ apiμ λν λ΄μ©μ λ³΄κ³ μΆμΌλ©΄ μ λͺ
ν MDN μ¬..