** πŸ“Œ μžλ°”μŠ€ν¬λ¦½νŠΈλž€ 무엇인가?**

ν•­λͺ© λ‚΄μš© λΉ„μœ 
πŸ—“οΈ 탄생 1995λ…„, λ„·μŠ€μΌ€μ΄ν”„, 10일 λ§Œμ— 개발 β€œκΈ‰μ‘°λœ 천재 아기”
🌍 μ‚¬μš©μ²˜ μ›Ή, μ„œλ²„(Node.js), λ°μŠ€ν¬νƒ‘, λͺ¨λ°”일, IoT β€œμ›Ήμ˜ μ–Έμ–΄, μ „μ²œν›„ 엔진”
🧬 μ–Έμ–΄ νƒ€μž… 인터프리터, 동적 타이핑, μ‹±κΈ€ μŠ€λ ˆλ“œ β€œμœ μ—°ν•œ 톡역사, 혼자 μΌν•˜λŠ” 셰프”
πŸ”₯ μ—”μ§„ V8(Chrome/Node.js), SpiderMonkey(Firefox), JavaScriptCore(Safari) β€œλΈŒλΌμš°μ €μ˜ 심μž₯, V8은 페라리 엔진”
🧩 νŠΉμ§• 이벀트 기반, 비동기, 객체 μ§€ν–₯(ν”„λ‘œν† νƒ€μž…), 동적, μ•½ν•œ νƒ€μž… β€œκΈ°λ―Όν•œ μΉ΄λ©œλ ˆμ˜¨β€

πŸ“Œ 2️⃣ μ™œ μžλ°”μŠ€ν¬λ¦½νŠΈμΈκ°€?

🌟 핡심 이유:

  1. λΈŒλΌμš°μ € λ‚΄ κΈ°λ³Έ μ–Έμ–΄ (ν”„λ‘ νŠΈμ—”λ“œ ν•„μˆ˜)
  2. Node.js둜 μ„œλ²„ κ°œλ°œκΉŒμ§€ ν™•μž₯
  3. ν’€μŠ€νƒ, μ•±, IoT, AIκΉŒμ§€ ν™œμš© λ²”μœ„ λ„“μŒ

πŸ”Ž 3️⃣ μ£Όμš” νŠΉμ§• 깊게 νŒŒν—€μΉ˜κΈ°


🧬 A. 인터프리터 & JIT 컴파일

μš©μ–΄ μ„€λͺ…
인터프리터 μ½”λ“œ ν•œ 쀄씩 μ‹€μ‹œκ°„ 해석, λΉ λ₯Έ μ‹€ν–‰ κ°€λŠ₯
JIT 컴파일 V8 엔진이 자주 μ“°μ΄λŠ” μ½”λ“œλ₯Ό 미리 κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜μ—¬ 속도 ν–₯상

πŸ“Š ꡬ쑰 λΉ„μœ :

πŸ‘¨β€πŸ³ β€œμ£Όλ°©μž₯”이 인터프리터 β†’ μ‹€μ‹œκ°„ μš”λ¦¬

πŸ€– JIT은 β€œλ ˆμ‹œν”Ό 암기” β†’ λ°˜λ³΅λ˜λŠ” λ©”λ‰΄λŠ” 미리 μ€€λΉ„ν•΄ 속도 μ—…

심화:

πŸ“Œ λ©΄μ ‘ 포인트:

β€œμžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 인터프리터 언어인가 컴파일러 언어인가?” β†’ λ‘˜ λ‹€ (ν•˜μ΄λΈŒλ¦¬λ“œ)


πŸ”’ B. 동적 타이핑 & μ•½ν•œ νƒ€μž…

μš©μ–΄ μ„€λͺ…
동적 타이핑 λ³€μˆ˜ μ„ μ–Έ μ‹œ νƒ€μž… μ§€μ • X, μ‹€ν–‰ 쀑 νƒ€μž… κ²°μ •
μ•½ν•œ νƒ€μž… λ‹€λ₯Έ νƒ€μž… κ°„ μžλ™ λ³€ν™˜ ν—ˆμš© (암묡적 ν˜•λ³€ν™˜)

μ˜ˆμ‹œ:

let a = 1;
a = "λ¬Έμžμ—΄"; // OK
console.log(1 + '2'); // '12' (λ¬Έμžμ—΄ λ³€ν™˜)

트랩 포인트:

[] + {} // "[object Object]"
{} + [] // 0

β†’ μ‹€λ¬΄μ—μ„œ μ£Όμ˜ν•΄μ•Ό 함!

πŸ“Œ λ©΄μ ‘ λŒ€λΉ„:

β€œλ™μ  타이핑이 κ°€μ Έμ˜€λŠ” μž₯단점은?”

단점: Type μ•ˆμ •μ„± ↓ β†’ TypeScript둜 보완

πŸ“„ ν•œλˆˆμ— λ³΄λŠ” μžλ°” 슀크립트

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width", initial-scale="1.0">
    <title>JavaScript κ°œμš” 심화 μ™„μ„±νŒ</title>
</head>
<body>

    <!-- 
        🌐 HTML: μ›Ή νŽ˜μ΄μ§€μ˜ "ꡬ쑰" (λΌˆλŒ€)
        🎨 CSS: μ›Ή νŽ˜μ΄μ§€μ˜ "μŠ€νƒ€μΌ" (ν”ΌλΆ€, 옷)
        βš™οΈ JavaScript: μ›Ή νŽ˜μ΄μ§€μ˜ "λ™μž‘, κΈ°λŠ₯" (근윑, 행동)
        
        πŸ“Œ 핡심:
        - HTML & CSS: 정적(Static) β†’ λ³€ν•˜μ§€ μ•ŠμŒ
        - JavaScript: 동적(Dynamic) β†’ μ‹€μ‹œκ°„ λ³€ν™” κ°€λŠ₯
    -->

    <h1>✨ μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) κ°œμš”</h1>

    <p>
        πŸš€ HTML νŽ˜μ΄μ§€μ˜ **λ™μž‘, κΈ°λŠ₯을 μ œμ–΄**<br>
        🌍 λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” **λŒ€ν‘œμ μΈ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ μ–Έμ–΄**<br>
        πŸ“– **인터프리터 방식** (ν•œ 쀄씩 해석해 μ¦‰μ‹œ μ‹€ν–‰)<br>
        πŸ”₯ μ΅œκ·Όμ—λŠ” **Node.js**둜 μ„œλ²„ μ‚¬μ΄λ“œμ—μ„œλ„ μ‚¬μš© κ°€λŠ₯<br>
    </p>

    <!-- 
        πŸ“Œ μžλ°”μŠ€ν¬λ¦½νŠΈ νŠΉμ§• (심화 정리)
        1️⃣ 인터프리터 방식:
            - 별도 컴파일 없이 ν•œ 쀄씩 해석, λ°”λ‘œ μ‹€ν–‰
            - 문법 였λ₯˜λŠ” μ‹€ν–‰ μ‹œμ μ—μ„œλ§Œ 확인 κ°€λŠ₯

        2️⃣ μžλ°”μ™€μ˜ 차이:
            - Java: 정적 νƒ€μž… + 컴파일 ν•„μš” β†’ JVMμ—μ„œ μ‹€ν–‰
            - JavaScript: 동적 νƒ€μž… + 인터프리터 방식 β†’ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰
        
        3️⃣ 동적 νƒ€μž… (Dynamic Typing):
            - λ³€μˆ˜ μ„ μ–Έ μ‹œ νƒ€μž… λͺ…μ‹œ X β†’ μ‹€ν–‰ 쀑 νƒ€μž… κ²°μ •
            - μœ μ—°ν•˜μ§€λ§Œ νƒ€μž… 였λ₯˜ μœ„ν—˜ ↑

        4️⃣ μ‹±κΈ€ μŠ€λ ˆλ“œ + 비동기 처리:
            - ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μž‘μ—… (μ‹±κΈ€ μŠ€λ ˆλ“œ)
            - 비동기 μ²˜λ¦¬λŠ” Event Loop, Callback Queue ν™œμš©
        
        5️⃣ μ‹€ν–‰ ν™˜κ²½:
            - λΈŒλΌμš°μ €(ν΄λΌμ΄μ–ΈνŠΈ) + Node.js(μ„œλ²„) + λͺ¨λ°”일, IoT λ“± ν™•μž₯ κ°€λŠ₯
        
        6️⃣ μŠ€μ½”ν”„(Scope):
            - var: ν•¨μˆ˜ μŠ€μ½”ν”„ (μ§€μ–‘)
            - let, const: 블둝 μŠ€μ½”ν”„ (ꢌμž₯)

        7️⃣ 객체 μ§€ν–₯ + ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 지원
    -->

    <script>
        // πŸ“’ μ½˜μ†”μ— "Hello World" 좜λ ₯
        console.log("βœ… Hello World");

        // πŸ’‘ λ³€μˆ˜ μ„ μ–Έ (동적 νƒ€μž… νŠΉμ§•)
        let variable = 10; // μˆ«μžν˜•
        console.log("πŸ“Œ λ³€μˆ˜ (숫자):", variable);

        variable = "λ¬Έμžμ—΄"; // μž¬ν• λ‹Ή β†’ λ¬Έμžμ—΄ν˜•μœΌλ‘œ λ³€κ²½
        console.log("πŸ“Œ λ³€μˆ˜ (λ¬Έμžμ—΄):", variable);

        // 🎯 ν•¨μˆ˜ 선언식 μ˜ˆμ‹œ
        function greet(name) {
            console.log(`πŸ‘‹ μ•ˆλ…•ν•˜μ„Έμš”, ${name}λ‹˜!`);
        }
        greet("홍길동");

        // 🚦 쑰건문 μ˜ˆμ‹œ
        let score = 75;
        if (score >= 90) {
            console.log("πŸ… A학점");
        } else if (score >= 80) {
            console.log("πŸ‘ B학점");
        } else {
            console.log("πŸ“‰ C학점 μ΄ν•˜");
        }

        // πŸ” 반볡문 (for, while, forEach)
        console.log("πŸ”„ forλ¬Έ:");
        for (let i = 1; i <= 3; i++) {
            console.log(`반볡 ${i}`);
        }

        console.log("πŸ”„ whileλ¬Έ:");
        let i = 1;
        while (i <= 3) {
            console.log(`반볡 ${i}`);
            i++;
        }

        console.log("πŸ”„ forEachλ¬Έ:");
        const animals = ["🐢", "🐱", "🦊"];
        animals.forEach((animal, index) => {
            console.log(`${index + 1}번째 동물: ${animal}`);
        });

        // πŸ—ƒοΈ 객체 μ‚¬μš© (ν”„λ‘œνΌν‹° + λ©”μ„œλ“œ)
        const person = {
            name: "철수",
            age: 25,
            greet: function() {
                console.log(`πŸ™‹β€β™‚οΈ ${this.name}의 λ‚˜μ΄λŠ” ${this.age}μ‚΄`);
            }
        };
        person.greet();

        // βš™οΈ ν•¨μˆ˜ ν‘œν˜„μ‹ & ν™”μ‚΄ν‘œ ν•¨μˆ˜
        const multiply = (a, b) => a * b;
        console.log("βœ–οΈ 3 x 4 =", multiply(3, 4));

        // 🌟 비동기 처리 (setTimeout + 이벀트 루프 κ°œλ…)
        console.log("⏱️ 2초 ν›„ λ©”μ‹œμ§€ 좜λ ₯ μ˜ˆμ •...");
        setTimeout(() => {
            console.log("βœ… 2초 κ²½κ³Ό: 비동기 처리 μ™„λ£Œ (Event Loop μž‘λ™)");
        }, 2000);

        // 🧠 ν΄λ‘œμ € κΈ°λ³Έ μ˜ˆμ‹œ (심화)
        function outer() {
            let outerVar = "μ™ΈλΆ€ λ³€μˆ˜";
            function inner() {
                console.log(`πŸ”’ ν΄λ‘œμ €: ${outerVar}`);
            }
            return inner;
        }
        const closureFunc = outer();
        closureFunc(); // μ™ΈλΆ€ λ³€μˆ˜ μ ‘κ·Ό
    </script>

    <h3>πŸ“Œ μžλ°”μŠ€ν¬λ¦½νŠΈ νŠΉμ§• (정리)</h3>
    <ul>
        <li>❌ μ ‘κ·Όμ œν•œμž(public/private λ“±) μ—†μŒ β†’ ES6 class 일뢀 제곡</li>
        <li>πŸ’‘ 동적 νƒ€μž… β†’ λ³€μˆ˜ νƒ€μž… μ‹€ν–‰ 쀑 κ²°μ • (μž₯점: μœ μ—°, 단점: νƒ€μž… λΆˆμ•ˆμ •)</li>
        <li>πŸ”’ λ³΄μ•ˆμƒ JS μ†ŒμŠ€κ°€ λ…ΈμΆœ (F12 κ°œλ°œμžλ„κ΅¬λ‘œ 확인 κ°€λŠ₯)</li>
        <li>⚠️ 문법 였λ₯˜ μ‹€ν–‰ μ‹œμ μ—μ„œλ§Œ 발견 (컴파일 X)</li>
        <li>πŸ“„ 객체 μ§€ν–₯ + ν•¨μˆ˜ν˜• ν˜Όν•©ν˜• μ–Έμ–΄</li>
        <li>πŸ“± Node.js, React Native둜 μ„œλ²„, λͺ¨λ°”일, IoT ν™•μž₯</li>
        <li>πŸ“¦ λ°©λŒ€ν•œ 라이브러리/ν”„λ ˆμž„μ›Œν¬ (React, Vue, Express λ“±)</li>
    </ul>

    <h3>πŸ“š μžλ°”μŠ€ν¬λ¦½νŠΈ μ‚¬μš© 방법</h3>
    <ul>
        <li>πŸ”Έ <strong>인라인(Inline)</strong>: HTML νƒœκ·Έμ— 직접 μ‚½μž… (λΉ„μΆ”μ²œ ❌ μœ μ§€λ³΄μˆ˜ 어렀움)</li>
        <li>πŸ”Έ <strong>λ‚΄λΆ€(Internal)</strong>: HTML λ‚΄λΆ€ &lt;script&gt; μ‚¬μš© (μ†Œκ·œλͺ¨μ— 적합)</li>
        <li>πŸ”Έ <strong>μ™ΈλΆ€(External)</strong>: 별도 .js 파일 μž‘μ„± ν›„ 뢈러였기 (βœ… κ°•λ ₯ μΆ”μ²œ)</li>
    </ul>

    <h4>🎯 인라인 방식 μ˜ˆμ‹œ</h4>

    <!-- πŸ“’ λ²„νŠΌ 클릭 μ‹œ μ•Œλ¦Όμ°½ 좜λ ₯ (인라인 방식) -->
    <button onclick="window.alert('πŸ‘‹ μ•ˆλ…•ν•˜μ„Έμš”!')">μ•Œλ¦Όμ°½ 좜λ ₯</button>

    <!-- πŸ“’ μ½˜μ†” 좜λ ₯ (인라인) -->
    <button onclick="console.log('πŸ”” μ½˜μ†” 좜λ ₯')">μ½˜μ†” 좜λ ₯</button>

    <!-- πŸ“’ λ§ν¬μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ -->
    <a href="javascript:alert('λ°˜κ°‘μŠ΅λ‹ˆλ‹€')">λ§ν¬μ—μ„œ μ•Œλ¦Όμ°½ 좜λ ₯</a>
    <a href="javascript:btnClick()">λ§ν¬μ—μ„œ μ½˜μ†” 좜λ ₯</a>

    <h4>πŸ“ λ‚΄λΆ€ 슀크립트 μ˜ˆμ‹œ</h4>
    <button id="btn">λ‚΄λΆ€ 슀크립트 μ•Œλ¦Ό 좜λ ₯</button>
    <button onclick="btnClick()">λ‚΄λΆ€ 슀크립트 μ½˜μ†” 좜λ ₯</button>

    <script>
        // 🎯 λ‚΄λΆ€ 방식: λ²„νŠΌμ— 이벀트 λ¦¬μŠ€λ„ˆ μ—°κ²°
        let btn = document.getElementById("btn");
        btn.onclick = function() {
            window.alert("πŸ“’ λ‚΄λΆ€ 슀크립트 μ•Œλ¦Όμ°½ 좜λ ₯됨");
        };

        // μ½˜μ†” 좜λ ₯ ν•¨μˆ˜
        function btnClick() {
            console.log("βœ… μ½˜μ†” 좜λ ₯ λ²„νŠΌ 클릭됨");
        }
    </script>

    <H4>외뢀방식</H4>
    <script src="sample.js" rel="javascript"></script>
    <button onclick="text()">μ™ΈλΆ€ν•¨μˆ˜ 호좜</button>

    <!-- πŸ“„ μ™ΈλΆ€ 슀크립트 μ˜ˆμ‹œ -->
    <!-- <script src="main.js"></script> -->

    <!-- 
        🌟 싀무/λ©΄μ ‘ 심화 포인트:
        1. μ‹±κΈ€ μŠ€λ ˆλ“œ β†’ 비동기 처리(Event Loop, Callback Queue, Web API ꡬ쑰 이해)
        2. μŠ€μ½”ν”„(ν•¨μˆ˜/블둝) + ν΄λ‘œμ €(Closure) β†’ λ©΄μ ‘μ—μ„œ 자주 질문
        3. ν”„λ‘œν† νƒ€μž… 기반 β†’ 상속, λ©”λͺ¨λ¦¬ 효율 (prototype chain)
        4. var λŒ€μ‹  let/const μ‚¬μš© ꢌμž₯ (ES6 이후)
        5. Node.js β†’ λ°±μ—”λ“œ, λͺ¨λ°”일, IoT ν™•μž₯ κ°€λŠ₯
        6. ν•¨μˆ˜ν˜• νŒ¨ν„΄, κ³ μ°¨ ν•¨μˆ˜, async/await λ“± μ΅œμ‹  문법도 읡히기
    -->
</body>
</html>

🏎️ C. μ‹±κΈ€ μŠ€λ ˆλ“œ + 이벀트 루프 ꡬ쑰 μ™„μ „ ν•΄λΆ€


μš”μ†Œ μ—­ν•  λΉ„μœ 
Call Stack ν•¨μˆ˜ μ‹€ν–‰ μˆœμ„œ μŠ€νƒ μ ‘μˆ˜ 창ꡬ
Web APIs 비동기 μž‘μ—… 처리 곡간 (setTimeout, fetch λ“±) μ£Όλ°© μ™Έ μ•Œλ°”
Callback Queue μž‘μ—… μ™„λ£Œλœ 콜백 λŒ€κΈ°μ—΄ λŒ€κΈ° μ†λ‹˜
Event Loop Call Stack λΉ„λ©΄ λŒ€κΈ°μ—΄ κ°€μ Έμ˜΄ 웨이터

πŸ“Š μ‹œκ°ν™”:

πŸ“₯ Call Stack β†’ 🌐 Web APIs β†’ πŸ“¦ Callback Queue β†’ πŸ”„ Event Loop β†’ πŸ“₯ Call Stack

πŸ’‘ 심화: Microtask vs Macrotask

ꡬ뢄 μ˜ˆμ‹œ
Microtask Promise.then(), MutationObserver
Macrotask setTimeout, setInterval, UI 이벀트

μš°μ„ μˆœμœ„:

Microtaskκ°€ 항상 λ¨Όμ € 싀행됨!


🧩 D. 객체 μ§€ν–₯ & ν”„λ‘œν† νƒ€μž… μ™„μ „ 뢄석


μžλ°”μŠ€ν¬λ¦½νŠΈ 클래슀 기반 μ–Έμ–΄
객체 β†’ ν”„λ‘œν† νƒ€μž… 체인 클래슀 β†’ 상속
동적 ν™•μž₯ κ°€λŠ₯ 정적 ꡬ쑰
function Animal(name) {
  this.name = name;
}
Animal.prototype.sound = function() {
  console.log('sound');
};
const dog = new Animal('Dog');
dog.sound();

πŸ“Œ Prototype Chain μ‹œκ°ν™”:

dog β†’ Animal.prototype β†’ Object.prototype β†’ null

πŸ“Œ λ©΄μ ‘ 포인트:

β€œν”„λ‘œν† νƒ€μž… 상속과 클래슀 μƒμ†μ˜ 차이점은?”


πŸ•ΉοΈ E. μ—”μ§„ 심화 (V8 κΈ°μ€€)


πŸ”₯ V8 μ—”μ§„μ˜ 강점

  1. JIT 컴파일 β†’ 빠름
  2. Garbage Collector β†’ λ©”λͺ¨λ¦¬ 관리 μžλ™
  3. Hidden Class β†’ 객체 μ΅œμ ν™”
  4. Inline Cache β†’ 동일 μ—°μ‚° 가속

πŸ“Œ 싀무:

Node.jsλŠ” V8 기반 β†’ μžλ°”μŠ€ν¬λ¦½νŠΈ μ„œλ²„μ—μ„œ λ™μž‘


πŸŽ“ 기술 λ©΄μ ‘ λŒ€λΉ„ & 싀무 포인트

질문 핡심
μ‹±κΈ€ μŠ€λ ˆλ“œμΈλ° 비동기 처리 방법은? 이벀트 루프, Web API, 콜백 큐 ꡬ쑰
ν”„λ‘œν† νƒ€μž… μ²΄μΈμ΄λž€? 객체가 λΆ€λͺ¨ μ—­ν•  객체 μ°Έμ‘°
TypeScriptκ°€ μ™œ ν•„μš”ν•œκ°€? 동적 νƒ€μ΄ν•‘μœΌλ‘œ μΈν•œ νƒ€μž… λΆˆμ•ˆμ •μ„± ν•΄κ²°
V8 μ—”μ§„ νŠΉμ§•? JIT 컴파일, λ©”λͺ¨λ¦¬ μ΅œμ ν™”
Java와 JavaScript 차이? ꡬ쑰/λͺ©μ /νƒ€μž… μ „λΆ€ 닀름, μ΄λ¦„λ§Œ λΉ„μŠ·

1️⃣ μ‹±κΈ€ μŠ€λ ˆλ“œμΈλ° 비동기 처리 방법은?

πŸ“Œ 핡심

🎯 μ–΄λ–»κ²Œ κ°€λŠ₯?

πŸ‘‰ 이벀트 루프(Event Loop), Web API, 콜백 큐 ꡬ쑰 덕뢄!

🧩 ꡬ쑰 흐름

  1. μ‹±κΈ€ μŠ€λ ˆλ“œ: 메인 μŠ€λ ˆλ“œμ—μ„œ μ½”λ“œ ν•œ 쀄씩 μ‹€ν–‰.
  2. Web API μ˜μ—­ (λΈŒλΌμš°μ € 제곡):
    • 비동기 μž‘μ—… (setTimeout, DOM 이벀트, fetch λ“±) 처리λ₯Ό 맑음.
  3. 콜백 큐(Callback Queue):
    • 비동기 μž‘μ—… λλ‚œ ν›„, 콜백 ν•¨μˆ˜κ°€ 큐에 듀어감.
  4. 이벀트 루프(Event Loop):
    • 메인 μŠ€νƒμ΄ λΉ„λ©΄, 콜백 큐에 μžˆλŠ” μž‘μ—…μ„ 가져와 μ‹€ν–‰!

πŸ’‘ 정리

ꡬ성 μš”μ†Œ μ—­ν• 
μ‹±κΈ€ μŠ€λ ˆλ“œ ν•œ λ²ˆμ— ν•˜λ‚˜μ”© μ½”λ“œ μ‹€ν–‰
Web API 비동기 μž‘μ—… 처리 (setTimeout λ“±)
콜백 큐 μ™„λ£Œλœ 비동기 μž‘μ—… λŒ€κΈ° μž₯μ†Œ
이벀트 루프 메인 μŠ€νƒμ΄ λΉ„λ©΄, 콜백 νμ—μ„œ μž‘μ—… κ°€μ Έμ˜΄

2️⃣ ν”„λ‘œν† νƒ€μž… μ²΄μΈμ΄λž€?

πŸ“Œ 핡심

🎯 μ–΄λ–»κ²Œ λ™μž‘?

  1. 객체가 μ–΄λ–€ 속성을 찾을 λ•Œ:
    • λ¨Όμ € 자기 μžμ‹ μ—κ²Œμ„œ 찾음.
    • μ—†μœΌλ©΄ 자기 λΆ€λͺ¨μΈ ν”„λ‘œν† νƒ€μž… κ°μ²΄μ—μ„œ 찾음.
    • 계속 μœ„λ‘œ 따라감 β†’ ν”„λ‘œν† νƒ€μž… 체인!
  2. λκΉŒμ§€ μ—†μœΌλ©΄ undefined.

πŸ“ λΉ„μœ 

let parent = { skill: "coding" };
let child = Object.create(parent);
console.log(child.skill); // "coding" (λΆ€λͺ¨μ—μ„œ μƒμ†λ°›μŒ)

β†’ μƒμ†μ²˜λŸΌ μž‘λ™, 객체 κ°„ μ—°κ²° 고리!

3️⃣ TypeScriptκ°€ μ™œ ν•„μš”ν•œκ°€?

πŸ“Œ 핡심


🎯 μž₯점

μž₯점 μ„€λͺ…
정적 νƒ€μž… λ³€μˆ˜, ν•¨μˆ˜μ˜ νƒ€μž… λͺ…ν™•νžˆ λͺ…μ‹œ κ°€λŠ₯
컴파일 λ‹¨κ³„μ—μ„œ 체크 νƒ€μž… μ—λŸ¬ 미리 발견 β†’ λŸ°νƒ€μž„ 였λ₯˜ μ€„μž„
μ½”λ“œ 가독성 ↑ ν˜‘μ—… μ‹œ νƒ€μž… λͺ…ν™• β†’ μœ μ§€λ³΄μˆ˜ 쉬움
μžλ™μ™„μ„± ↑ IDEμ—μ„œ νƒ€μž… 정보 기반으둜 μΆ”μ²œ κ°€λŠ₯

4️⃣ V8 μ—”μ§„ νŠΉμ§•?

πŸ“Œ 핡심


🎯 상세

νŠΉμ§• μ„€λͺ…
JIT 컴파일 μžλ°”μŠ€ν¬λ¦½νŠΈ β†’ κΈ°κ³„μ–΄λ‘œ λ°”λ‘œ λ³€ν™˜ β†’ 빠름
κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ μ•ˆ μ“°λŠ” λ©”λͺ¨λ¦¬ μžλ™ 정리 β†’ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ°©μ§€
μ΅œμ ν™”λœ μ‹€ν–‰ 자주 μ“°λŠ” μ½”λ“œ β†’ 더 λΉ λ₯΄κ²Œ 재컴파일

5️⃣ Java와 JavaScript 차이?

πŸ“Œ 핡심

μ΄λ¦„λ§Œ λΉ„μŠ·ν•˜κ³  μ™„μ „νžˆ λ‹€λ₯Έ μ–Έμ–΄!


🎯 μ£Όμš” 차이점

ꡬ뢄 Java JavaScript
ꡬ쑰 컴파일 μ–Έμ–΄, κ°•νƒ€μž…, 클래슀 기반 인터프리터 μ–Έμ–΄, 동적 νƒ€μž…, ν”„λ‘œν† νƒ€μž… 기반
μ‹€ν–‰ ν™˜κ²½ JVM (Java Virtual Machine) λΈŒλΌμš°μ €, Node.js
λͺ©μ  μ„œλ²„, μ—”ν„°ν”„λΌμ΄μ¦ˆ, μ•± 개발용 μ›Ή 개발 (주둜 ν΄λΌμ΄μ–ΈνŠΈ), ν’€μŠ€νƒ κ°€λŠ₯
νƒ€μž… 정적 νƒ€μž… (νƒ€μž… λͺ…μ‹œ ν•„μˆ˜) 동적 νƒ€μž… (νƒ€μž… μžμœ λ‘œμ›€)