π λ³Έ ν¬μ€νΈλ 'λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' λμλ₯Ό λ°νμΌλ‘ ν΅μ¬ κ°λ λ° λ΄μ©μ μμ½ν ν¬μ€νΈμ λλ€.
05μ₯ ννμκ³Ό λ¬Έ
5.1 κ°
κ°μ ννμμ΄ νκ°λμ΄ μμ±λ κ²°κ³Όλ₯Ό λ§ν©λλ€. μ¬κΈ°μ νκ°λ μμ ν΄μνμ¬ κ°μ μμ±νκ±°λ μ°Έμ‘°νλ κ²μ μλ―Έν©λλ€.
μλ μμ λ ννμ 10 + 20μ νκ°ν κ²°κ³Όλ‘ 30μ΄λΌλ μ«μ κ°μ μμ±ν©λλ€.
10 + 20; // 30
λͺ¨λ κ°μ λ°μ΄ν° κ°μ κ°μ§λ©° λ©λͺ¨λ¦¬μλ 2μ§μ(bit)μ μ°μμΌλ‘ ννλ©λλ€. λν, λ°μ΄ν° κ°μ λ°λΌ λ©λͺ¨λ¦¬μ μ μ₯λ κ°μ΄ λ€λ₯΄κ² ν΄μλ μ μμμ μ£Όμν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄ 0100 0001μ΄λΌλ κ°μ΄ λ©λͺ¨λ¦¬μ μ μ₯λμ΄ μμ λ, λ°μ΄ν° νμ μ΄ μ«μμΈ κ²½μ°μλ 65, λ¬ΈμμΈ κ²½μ°μλ 'A'μΌλ‘ ν΄μλ©λλ€.
μμ λ³μλ νλμ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μνμ¬ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ λ©λͺ¨λ¦¬ 곡κ°μ λΆμΈ μ΄λ¦μ΄λΌκ³ νμλλ° μ΄λμ λ°μ΄ν°κ° κ°μ΄ λ©λλ€. μ¦, κ°μ λ³μμ ν λΉλλ κ²μ΄λΌκ³ λ³Ό μ μμ΅λλ€.
var score = 10 + 20;
μ μμ μμ score λ³μμ ν λΉλλ κ²μ ννμ 10 + 20κ° μλ ν΄λΉ μμ΄ νκ°λ κ²°κ³ΌμΈ 30μ λλ€. μ¦, λ³μκ° κΈ°μ΅νλ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λλ κ²μ 'κ°'μ΄λΌλ κ²μ μ μ μμ΅λλ€.
μ΄λ¬ν κ°μ μ μμ μ²λΌ μμΌλ‘ μμ±ν μλ μμ§λ§ κ°μ₯ κΈ°λ³Έμ μΌλ‘ 리ν°λ΄μ μ¬μ©νμ¬ λ§λ€ μ μμ΅λλ€.
5.2 리ν°λ΄
리ν°λ΄μ μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ λλ μ½μλ κΈ°νΈλ₯Ό μ¬μ©νμ¬ κ°μ μμ±νλ νκΈ°λ²μ λ§ν©λλ€.
3
'Hello'
μ μμ λ λ¨μν 3μ΄λΌλ μλΌλΉμ μ«μμ 'Hello'λΌλ λ¬Έμμ΄μ΄ μλλΌ κ°κ° μ«μ 리ν°λ΄, λ¬Έμμ΄ λ¦¬ν°λ΄μ λλ€.
μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ(μ΄ κ²½μ°μλ μλΌλΉμ μ«μ) λλ μ½μλ κΈ°νΈ(μ΄ κ²½μ°μλ ''λ‘ κ°μΈλ κ²)λ₯Ό ν΅νμ¬ κ°μ μμ±ν μμμ΄λ©° μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈ μμ§μ 리ν°λ΄μ νκ°νμ¬ κ°μ μμ±ν©λλ€.
μλ°μ€ν¬λ¦½νΈμμλ μλμ κ°μ 리ν°λ΄μ κ°μ§κ³ μμΌλ©° κ°μ μμ±νκΈ° μνμ¬ λ―Έλ¦¬ μ½μν νκΈ°λ² μ λλ‘ λ³Ό μ μμ΅λλ€.
리ν°λ΄ μ’ λ₯ | μμ |
μ μ | 100 |
λΆλμμμ | 10.5 |
2μ§μ | 0b01000001 |
8μ§μ | 0o101 |
16μ§μ | 0x41 |
λ¬Έμμ΄ | 'hello' "world" |
λΆλ¦¬μΈ | true false |
null | null |
undefined | undefined |
κ°μ²΄ | { name: 'Choi', address: 'Seoul' } |
λ°°μ΄ | [ 1, 2, 3 ] |
ν¨μ | function() { } |
μ κ· ννμ | /[A-Z]+/g |
5.3 ννμ
ννμμ κ°μΌλ‘ νκ°λ μ μλ λ¬Έμ μλ―Έν©λλ€. μ¦, ννμμ΄ νκ°λλ©΄ μλ‘μ΄ κ°μ μμ±νκ±°λ κΈ°μ‘΄ κ°μ μ°Έμ‘°ν©λλ€.
λ°λ‘ μμμ μ΄ν΄λ³Έ 리ν°λ΄ μμ κ°μΌλ‘ νκ°λλ€κ³ νμμΌλ―λ‘ ννμμ ν¬ν¨λλ€κ³ ν μ μμ΅λλ€.
var score = 100;
μ μμ μμμ 100μ 리ν°λ΄μ΄λ©° κ°μΌλ‘ νκ°λκΈ° λλ¬Έμ 리ν°λ΄ 100μ κ·Έ μμ²΄λ‘ ννμμ λλ€.
var score = 50 + 50;
50 + 50μ 리ν°λ΄κ³Ό μ°μ°μλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€. 50 + 50 λ νκ°λμ΄ 100μ΄λΌλ κ°μ μμ±νλ―λ‘ ννμμ΄λΌκ³ ν μ μμ΅λλ€.
score;
λ³μ μλ³μλ₯Ό μ°Έμ‘°νλ©΄ λ³μ κ°μΌλ‘ νκ°λ©λλ€. μλ³μ μ°Έμ‘°μ κ²½μ° κ°μ μμ±νμ§ μμ§λ§ κ°μΌλ‘ νκ°λκΈ° λλ¬Έμ ννμμ΄λΌκ³ ν μ μμ΅λλ€.
μ μμμ²λΌ ννμμ 리ν°λ΄, μλ³μ, μ°μ°μ, ν¨μ νΈμΆ λ±μ μ‘°ν©μΌλ‘ μ΄λ£¨μ΄μ§ μ μμ΅λλ€.
μ°λ¦¬λ ννμμ κ°μΌλ‘ νκ°λλ€λ μ¬μ€μ ν΅νμ¬ ννμ, κ·Έλ¦¬κ³ ννμμΌλ‘ νκ°λ κ°μ λμΉλΌλ κ²μ μ μ μμ΅λλ€.
μλ₯Ό λ€μ΄ 100 = 50 + 50μμ 100κ³Ό 50 + 50μ λμΉμ λλ€. μ΄λ 50 + 50 κ³Ό κ°μ ννμμ 100μ΄λΌλ κ°κ³Ό λμΌνκ² μ¬μ©ν μ μμΌλ©° JS λ¬Έλ²μμ κ°μ΄ μμΉν μ μλ μ리μλ ννμμ΄ μμΉν μ μμμ λ°μ¦νλ€κ³ λ³Ό μ μμ΅λλ€.
5.4 λ¬Έ
λ¬Έμ νλ‘κ·Έλ¨μ ꡬμ±νλ κΈ°λ³Έ λ¨μμ΄μ μ€ν λ¨μλ₯Ό μλ―Έν©λλ€. λ¬Έμ μ§ν©μΌλ‘ μ΄λ£¨μ΄μ§ κ²μ΄ 곧 νλ‘κ·Έλ¨μ΄λ©° λ¬Έμ μμ±νκ³ μμλλ‘ λμ΄νλ κ²μ΄ νλ‘κ·Έλλ°μ΄λΌκ³ λ³Ό μ μμ΅λλ€.
μ΄λ¬ν λ¬Έμ μ¬λ¬ ν ν°μΌλ‘ ꡬμ±λ©λλ€. ν ν°μ λ¬Έλ²μ μΈ μλ―Έλ₯Ό κ°μ§λ©°, λ¬Έλ²μ μΌλ‘ λ μ΄μ λλ μ μλ atomicν μ½λμ κΈ°λ³Έ μμ, μ΅μ λ¨μμ λλ€.
ν ν°μ μμλ‘λ ν€μλ, μλ³μ, μ°μ°μ, 리ν°λ΄, μΈλ―Έμ½λ‘ μ΄λ λ§μΉ¨ν λ±μ λ¬Έλ²μ μλ―Έλ₯Ό κ°λ νΉμ κΈ°νΈκ° μμ΅λλ€.
λ¬Έμ λͺ λ Ήλ¬Έμ΄λΌκ³ λ λΆλ¦½λλ€. λ¬Έμ μ»΄ν¨ν°μκ² λ΄λ¦¬λ λͺ λ ΉμΌλ‘ λ¬Έμ΄ μ€νλλ©΄ λͺ λ Ήμ΄ μ€νλκ³ μ΄λ ν μΌμ΄ λ°μνκ² λ©λλ€. λ¬Έμ ν¬κ² μ μΈλ¬Έ, ν λΉλ¬Έ, 쑰건문, λ°λ³΅λ¬Έ λ±μΌλ‘ ꡬλΆν μ μμ΅λλ€.
// λ³μ μ μΈλ¬Έ
var x = 3;
// ν λΉλ¬Έ
x = 5;
// ν¨μ μ μΈλ¬Έ
function foo () {}
// 쑰건문
if (x > 1) { console.log(x); }
// λ°λ³΅λ¬Έ
for (var i = 0; i < 2; i++) { console.log(i); }
5.5 μΈλ―Έμ½λ‘ κ³Ό μΈλ―Έμ½λ‘ μλ μ½μ κΈ°λ₯
μΈλ―Έμ½λ‘ (;)μ λ¬Έμ μ’ λ£λ₯Ό λνλ λλ€. μ¦, JS μμ§μ μΈλ―Έμ½λ‘ μ ν΅νμ¬ λ¬Έμ΄ μ’ λ£λ μμΉλ₯Ό νμ νκ³ μμ°¨μ μΌλ‘ νλμ© λ¬Έμ μ€νν©λλ€. λ¨, 0κ° μ΄μμ λ¬Έμ μ€κ΄νΈλ‘ λ¬Άμ μ½λ λΈλ‘ λ€μλ λ°λ‘ μΈλ―Έμ½λ‘ μ λΆμ΄μ§ μμ΅λλ€(ifλ¬Έ, forλ¬Έ, ν¨μ λ±μ μ½λ λΈλ‘ λ€μλ λΆμ΄μ§ μλλ€λ λ§κ³Ό κ°μ΅λλ€). μ΄λ¬ν μ½λ λΈλ‘μ μΈμ λ λ¬Έμ μ’ λ£λ₯Ό μλ―Ένλ μ체 μ’ κ²°μ±μ κ°κ³ μκΈ° λλ¬Έμ μΈλ―Έμ½λ‘ μ λΆμ΄μ§ μμ΅λλ€.
κ·Έλ λ€λ©΄ μΈλ―Έμ½λ‘ μ νμλ‘ μμ±ν΄μΌ ν κΉμ? κ·Έλ μ§ μμ΅λλ€. μλ°μ€ν¬λ¦½νΈ μμ§μλ μμ€μ½λλ₯Ό ν΄μν λ λ¬Έμ λμ΄λΌκ³ μμΈ‘λλ μ§μ μμ μΈλ―Έμ½λ‘ μ μλμΌλ‘ λΆμ¬μ£Όλ ASI(μΈλ―Έμ½λ‘ μλ μ½μ ) κΈ°λ₯μ΄ μ묡μ μΌλ‘ μνλκΈ° λλ¬Έμ λλ€.
νμ§λ§ ASIμ λμμ΄ κ°λ°μμ μμΈ‘κ³Ό μΌμΉνμ§ μλ κ²½μ°κ° μ’ μ’ μμ΄ μ¬λ¬ λ¬Έμ κ° λ°μνκΈ° λλ¬Έμ μΈλ―Έμ½λ‘ μ¬μ©μ΄ κΆμ₯λκ³ μμ΅λλ€.
5.6 ννμμΈ λ¬Έκ³Ό ννμμ΄ μλ λ¬Έ
// λ³μ μ μΈλ¬Έμ κ°μΌλ‘ νκ°λ μ μκΈ° λλ¬Έμ ννμμ΄ μλλ€.
var x;
// 1, 2, 1 + 2, x = 1 + 2λ λͺ¨λ κ°μΌλ‘ νκ°λ μ μλ ννμμ΄λ€
// x = 1 + 2λ ννμμ΄λ©΄μ μμ ν λ¬Έμ΄κΈ°λ νλ€.
x = 1 + 2;
ννμμ λ¬Έκ³Ό λΉμ·νκΈ° λλ¬Έμ ꡬλ³νκΈ° μ΄λ ΅κ² λκ»΄μ§ μ μμ΅λλ€. νμ§λ§ ννμκ³Ό λ¬Έμ ꡬλ³νλ λ°©λ²μ μμΈλ‘ κ°λ¨ν©λλ€.
λ¬Έμλ ννμμΈ λ¬Έκ³Ό ννμμ΄ μλ λ¬Έμ΄ μμ΅λλ€. ννμμΈ λ¬Έμ κ°μΌλ‘ νκ°λ μ μμΌλ©° ννμμ΄ μλ λ¬Έμ κ°μΌλ‘ νκ°λ μ μμ΅λλ€. μλ₯Ό λ€μ΄ λ³μ μ μΈλ¬Έμ κ°μΌλ‘ νκ°λ μ μμΌλ―λ‘ ννμμΈ μλ λ¬Έ, ν λΉλ¬Έμ κ°μΌλ‘ ννλ μ μκΈ° λλ¬Έμ ννμμΈ λ¬Έμ ν΄λΉν©λλ€.
ννμμΈ λ¬Έκ³Ό ννμμ΄ μλ λ¬Έμ ꡬλ³νλ κ°μ₯ κ°λ¨ν λ°©λ²μ λ³μμ ν λΉν΄ 보λ κ²μ λλ€. λ³μμλ 'κ°'μ ν λΉν μ μκΈ° λλ¬Έμ λ³μμ ν λΉμ΄ λλ λ¬Έμ ννμμΈ λ¬ΈμΌλ‘ λ³Ό μ μμΌλ©° μλ¬κ° λ°μνλ κ²½μ°λ ννμμ΄ μλ λ¬ΈμΌλ‘ λ³Ό μ μμ΅λλ€.