λ³μλ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν κ°λ μ΄λ€
10+20 μ΄λΌλ μμ΄ μμ λ μ¬λμ 머리μμμλ
- μ«μ 10κ³Ό 20μ λλμ κΈ°μ΅(
μ μ₯)νλ€. μ΄λλ 10, + 20 μ΄λΌλ κΈ°νΈμ μλ―Έλ₯Ό μκ³ μ΄ν΄νλ€ (리ν°λ΄κ³Όμ°μ°μ) - μ°μ°νλ€
μ΄λ ννμμ μλ―Έλ₯Ό ν΄μ
νμ±νλ€ - μ°μ°ν κ²°κ³Όλ₯Ό λλμ κΈ°μ΅(
μ μ₯)νλ€ μ΄ μμκ° μ΄λ£¨μ΄μ§λ€
μ¬λμ μ κ³Όμ μ λͺ¨λ λλμμ μ²λ¦¬νμ§λ§, μ»΄ν¨ν°λ κΈ°μ΅, μ°μ° νλ κ³Όμ μ΄ λ€λ₯Έ λΆνμμ μ΄λ£¨μ΄μ§λ€
- 10κ³Ό 20μ
λ©λͺ¨λ¦¬μμ κΈ°μ΅νλ€ CPUμμ μ°μ°νλ€- μ°μ°ν κ²°κ³Όλ₯Ό
λ©λͺ¨λ¦¬μμ κΈ°μ΅νλ€
κ·ΈλΌ κΈ°μ΅μ λ΄λΉνλ λ©λͺ¨λ¦¬μ μ°μ°μ λ΄λΉνλ CPUμ λν΄ λ μμΈν μμ보μ
λ©λͺ¨λ¦¬λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬ μ μ μ§ν©μ²΄μ΄λ€ λ©λͺ¨λ¦¬ μ νκ°μ ν¬κΈ°λ 1byte(8bit)μ΄λ€. λ°μ΄ν°κ° 2μ§μ ννλ‘ μ΄κ³³μ μ μ₯λλ€
λ©λͺ¨λ¦¬ μ λ§λ€ κ³ μ μ μ£Όμκ° μ‘΄μ¬νλ€
μ»΄ν¨ν°λ μ΄ λ©λͺ¨λ¦¬ μ λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯(write) νκ±°λ μ½λλ€(read)
10+20μ μ°μ°ν λ, μ°μ 10κ³Ό 20μ λ©λͺ¨λ¦¬ μ μ μ μ₯(write)νλ€ κ·Έλ¦¬κ³ μ°μ°μ ν λ λ©λͺ¨λ¦¬ μ μ μ½μ΄ 10κ³Ό 20μ΄λΌλ μ«μλ₯Ό μ»μ΄ λΈλ€
μκΉ μ°λ¦¬λ 10+20μ λν΄μ 30μ΄λΌλ κ°μ μ»μλ€. μ΄ κ°μ λ λ€λ₯Έ λ©λͺ¨λ¦¬ μ μ μ μ₯λλ€
κ·Έλ°λ°, μλ°μ€ν¬λ¦½νΈμμλ λ©λͺ¨λ¦¬ μ μ μ§μ μ κ·Όν μ μλ€ μλ°μ€ν¬λ¦½νΈ λ©λͺ¨λ¦¬μ κ΄ν λ΄μ©μ λΈλ‘κ·Έ μ°Έκ³ ν¬μΈν°λ₯Ό μ¬μ©ν μ μλ λ€λ₯Έ μΈμ΄μλ λ€λ₯΄κ², λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ κ°μ μ§μ μ κ·Όν μ μλ€ μλνλ©΄ κ°μ΄ μ μ₯λ λ λ©λͺ¨λ¦¬μ μν©μ λ°λΌ μ΄λμ μ μ₯λλμ§ μμλ‘ κ²°μ λλ€
κ·Έλμ, κ°μ μ κ·ΌνκΈ° μν΄μλ νμ λ³μλ₯Ό μ΄μ©ν΄μ κ°μ μ κ·Όν΄μΌ νλ€
[!note] μ 리 λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ 곡κ°, λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦μ΄λ€
μ©μ΄λ₯Ό λ€μ μ 리νμλ©΄ λ³μμ κ°μ μ μ₯νλ κ²μ ν λΉ, λμ , μ μ₯(assignment) μ΄λΌκ³ νκ³ λ³μμ μ μ₯λ κ°μ μ½λ κ²μ μ°Έμ‘°(reference) λΌκ³ νλ€
μλ³μλ μ΄λ¦μμλ μ μ μλ―, μ΄λ€ κ°μ ꡬλ³νμ¬ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ΄λ€
νμ§λ§, μλ³μλ μ¬μ€ κ°μ ꡬλ³νμ§λ λͺ»νλ€
λμ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ꡬλ³νλ€
μλ³μκ° κΈ°μ΅νκ³ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ½κ³ , κ·Έ λ€μ λ©λͺ¨λ¦¬μ λ΄κΈ΄ κ°μ μ½λ κ³Όμ μ΄ μ΄λ£¨μ΄μ§λ κ²μ΄λ€
[!note] μλ³μ μλ³μλ λ©λͺ¨λ¦¬ μ£Όμμ λΆμΈ μ΄λ¦μ΄λ€
λ°λΌμ λ¨μν λ³μ λΏλ§ μλλΌ ν¨μ, ν΄λμ€ λ± λ©λͺ¨λ¦¬μ μ‘΄μ¬νλ λͺ¨λ κ°μ μ μ₯νλ μ΄λ¦μ μλ³μλΌκ³ λΆλ₯Έλ€
λ³μ μ μΈμ΄λ, λ³μλ₯Ό μ¬μ©νκ² λ€κ³ μ μΈνμ¬ λ³μλ₯Ό μμ±νλ κ²μ λ§νλ€ κ³Όμ μ λ€μκ³Ό κ°μ΄ μ΄λ£¨μ΄μ§λ€
- λ³μ μ΄λ¦μ΄ μ μΈλλ©΄, λ©λͺ¨λ¦¬ μ£Όμ νκ°λ₯Ό 골λΌμ λ©λͺ¨λ¦¬ 곡κ°μ ν보νλ€
- κ·Έλ¦¬κ³ κ°μ μ μ₯ν μ μλ€
λ³μλ₯Ό μ μΈνκΈ° μν΄μλ ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
ES6 μ μλ var ν€μλ λ°μ μμμ§λ§, μ΄ν letκ³Ό constκ° λ±μ₯νλ€
varμ λ¨μ μ΄ λ§κΈ° λλ¬Έμ letκ³Ό constλ₯Ό μ¬μ©ν κ²μ κΆμ₯νλ€
μμ§ letκ³Ό constμ λν΄ λ°°μ°μ§ μμμΌλ―λ‘, μ°μ μ varμ μ΄μ©ν΄ λ³μ μ μΈμ λν΄ μμ보μ
-
λ³μλ₯Ό μ μΈλλ€
var score;μ΄λ κ² μ μΈμ νλ©΄, λ©λͺ¨λ¦¬ 곡κ°μ ν보ν μ μλ€ -
μ΄κΈ°κ°μ΄ μ€μ λλ€
var score=0;μ²λΌ μ¬μ©μκ° μ΄κΈ°ν ν΄μ£Όμ§ μμ κ²½μ°μλ κ°μ΄undefinedλ‘ μλ μ΄κΈ°ν λλ€
undefinedλ μλ°μ€ν¬λ¦½νΈμμ μ 곡νλ μμ νμ μ κ°μ΄λ€ μμΈν λ΄μ©μ 6μ₯μ [[λ°μ΄ν° νμ ]] μμ μμΈν μμλ³Ό μ μλ€
[!warning] μ°Έκ³ letμ μλμΌλ‘ μ΄κΈ°ν λμ§ μλλ€. λ°λΌμ μ΄κΈ°κ°μ΄ undefinedκ° μλλ€ constλ μλμΌλ‘ μ΄κΈ°ν λμ§ μλλ€. constλ μ΄κΈ°κ°μ μ€μ ν΄μ£Όμ§ μμΌλ©΄ μλ¬κ° λ°μνλ€
νΈμ€ν (Hosting)κ³Ό νΈμ΄μ€ν (Hoisting)μ μ΄λ¦λ§ λΉμ·ν μμ λ€λ₯Έ κ°λ μ΄λ€- μΈλμ μΈλλ€μμ μ λ μ°¨μ΄λΌκ³ μκ°νλ©΄ λλ€
νΈμ€ν μ μΉ μλΉμ€λ μλ² νΈμ€ν μ ν λ μ°λ μ©μ΄μ΄λ€
ννμ΄μ§λ₯Ό λ§λ€μ΄μ AWSμλ²μ μ¬λ¦¬λ©΄, μλ²μ νλ‘μ νΈκ° 'νΈμ€ν ' λμλ€ λΌκ³ νλ€
λ°λ©΄ νΈμ΄μ€ν μ μλ°μ€ν¬λ¦½νΈμ 'νΉμ§'μ μ§μΉνλ μ©μ΄λ€.
Javascriptλ μΈν°νλ¦¬ν° μΈμ΄μκ³Ό λμμ μ»΄νμΌ μΈμ΄λ€. κ·Έλμ μ΄λ¬ν νΉμ§μ΄ μ‘΄μ¬νλ€.
νΈμ΄μ€ν (Hoisting)μ JavaScriptμμ λ³μμ ν¨μ μ μΈμ΄ μ€μ½νμ μλ¨μΌλ‘ λμ΄μ¬λ €μ§λ νΉμ§μ΄λ€
μ½λ μ€ν μ μ JavaScript μμ§μ μν΄ μ²λ¦¬λλ€
μμ§ μ μ λΏμ§ μμΌλ μ½λ μμλ₯Ό 보면μ μ΄ν΄ν΄λ³΄μ.
νΈμ΄μ€ν μ μ’ λ₯μλ λ³μ νΈμ΄μ€ν κ³Ό ν¨μ νΈμ΄μ€ν μ΄ μλ€.
λ³μ μ μΈμ νλ©΄ μ½λμ 맨 μλ‘ λμ΄μ¬λ €μ§λ€
[!question] νΈμ΄μ€ν μ μ΄μ μ΄ λ¬΄μμΈκ°μ? μ΄λμλ νΈλ¦¬νκ² λ³μλ₯Ό μ μΈν΄λ λλ€
λ¨, μ΄κΈ°ν(κ° ν λΉ)λ λμ΄μ¬λ €μ§μ§ μλλ€. μ¦ λ¨μν μ μΈλ§ ν΄μ€λ€. varλ‘ μ μΈλ ν€μλμ κ²½μ°, μ΄λ undefinedλ‘ μ΄κΈ°ν λλ€
console.log(x); // xκ° μ μΈλ μνλΌ undefinedκ° μΆλ ₯λλ€
var x = 100;
console.log(x); //100μ΄ μΆλ ₯λλ€μμ μ½λλ μλμ κ°μ΄ JSμμ§μ μν΄ μ²λ¦¬λλ€
var x //λ³μ νΈμ΄μ€ν
, μλ‘ λμ΄μ¬λ €μ§
console.log(x); // undefined
var x = 100;
console.log(x); // 100varλ‘ μ μΈλ λ³μλ νΈμ΄μ€ν
μ΄ λ°μνλ©°, μ μΈλΆκ° λμ΄μ¬λ €μ§μ§λ§ κ°μ λ£μ΄μ€ λΆλΆ(μ΄κΈ°ν λ λΆλΆ)μ λμ΄μ¬λ €μ§μ§ μμ undefinedλ‘ μΆλ ₯λλ€
μ΄λ₯Ό μ½κ² μ€λͺ ν΄λ³΄λ©΄, μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ 보면μ λͺ¨λ λ³μλ€μ λν μ¬μ μ λ§λ λ€
μλ₯Ό λ€μ΄
console.log(x+y+z); // undefined
var x = 1;
var y = 10;
var z = 100;
console.log(x+y+z); //111λΌλ μ½λκ° μμλ, μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μ x,y,zλ₯Ό λ°κ²¬νκ³ μ»΄νμΌ μ μ λ³μ μ¬μ μ λ§λ λ€. μ΄λ, κ°μ λ£μ§ μκ³ λΉμλλ€(undifined)
| οΏ½type | λ³μλͺ | κ° |
|---|---|---|
| var | x | undefined |
| var | y | undefined |
| var | z | undefined |
κ·Έλ¦¬κ³ μ½λλ₯Ό νλ νλ μ€νμν€λ©΄μ λ³μ κ°μ λ§μ£ΌμΉ κ²½μ° ( var x=1) μ΄ μ¬μ μ κ°μ μμ ν΄μ€λ€.
ν¨μ μ μΈμ ν¨μ μ μ²΄κ° λμ΄μ¬λ €μ§λ€. λ³μ νΈμ΄μ€ν κ³Ό λμΌνλ€
helloWorld(); // "Hello, World!"
function helloWorld() {
console.log("Hello, World!");
}μμ μ½λλ μλμ κ°μ΄ ν΄μλλ€
//ν¨μ νΈμ΄μ€ν
(맨 μλ‘ μ¬λΌμ΄)
function helloWorld() {
console.log("Hello, World!");
}
helloWorld(); // "Hello, World!"ν¨μ ννμμ κ²½μ° νΈμ΄μ€ν μ΄ λ°μνμ§ μλλ€.ν¨μ ννμμ λ³μ νΈμ΄μ€ν μ΄ λ°μνκΈ° λλ¬Έμ λ³μλ νΈμ΄μ€ν λμ§λ§ ν¨μλ κ·Έλ μ§ μλ€.
μ£Όμν΄μΌ ν μ μ, νΈμ΄μ€ν μ μ μΈλΆλ§ λμ΄μ¬λ €μ§λ©° ν λΉ(μ΄κΈ°ν) λΆλΆμ μλ μμΉμμ μ€νλλ€.
λ°λΌμ λ³μ μ΄κΈ°ν μ μ λ³μλ₯Ό μ°Έμ‘°νλ©΄ undefinedκ° λ°νλ μ μλ€.
ν¨μμ κ²½μ°λ ν¨μ μ μ²΄κ° λμ΄μ¬λ €μ§λ―λ‘ μ μΈ μ΄μ μ νΈμΆν΄λ μ μμ μΌλ‘ μλνλ€
letκ³Ό constλ λΈλ‘ μ€μ½νλ₯Ό κ°μ§λ©°, λΈλ‘ λ΄μμλ§ μ κ·Ό κ°λ₯νλ€
var: λ³μ μ μΈμ΄ λμ΄μ¬λ €μ Έμ, μ μΈ μ μ λ³μμ μ κ·Όνλ©΄undefinedκ° λμ¨λ€
console.log(a); // undefined
var a = 10;
console.log(a); // 10letκ³Ό const: λ³μ μ μΈμ΄ λμ΄μ¬λ €μ§μ§λ§, μ μΈ μ μλ μ κ·Όν μ μλ€.
μ μΈ μ μ μ κ·Όμ μλνλ©΄ μ€λ₯κ° λλ€
console.log(b); // ReferenceError: b is not defined
let b = 20;
console.log(c); // ReferenceError: c is not defined
const c = 30;μλνλ©΄ letκ³Ό constλ μ μΈμ΄ νΈμ΄μ€ν
λμ§λ§ μ΄κΈ°νλ νΈμ΄μ€ν
λμ§ μλλ€.
μ΄λ κ² λ³μκ° μ μΈλ λκ³ λμλΆν° μ΄κΈ°νλκΈ° μ κΉμ§μ ꡬκ°μ μΌμμ μ¬κ°μ§λ(TDZ)λΌκ³ νλ€ Temporal Dead Zone
| οΏ½type | λ³μλͺ | κ° |
|---|---|---|
| οΏ½let | a | (λΉμ΄μμ) |
| let | b | (λΉμ΄μμ) |
| const | c | (λΉμ΄μμ) |
λ³μμ κ°μ μ μ₯νλ κ²μ ν λΉ μ΄λΌκ³ ν λ€λ κ²μ μμμ μΈκΈνλ€ μ΄λ, ν λΉ μ°μ°μ =μ μ¬μ©νλ€ μ€λ₯Έμͺ½μ μλ κ°μ μΌμͺ½μΌλ‘ ν λΉνλ€
var score=80;λν μμμ νΈμ΄μ€ν μ λν΄ μμλ³Όλ μΈκΈνλ―μ΄, λ³μ μ μΈμ΄ νΈμ΄μ€ν λ¨κ³μμ λ¨Όμ μ΄λ£¨μ΄μ§κ³ , κ°μ ν λΉμ λμ€μ μ΄λ£¨μ΄μ§λ€
[!note] λ³μμ μ μΈκ³Ό κ°μ ν λΉ λ³μ μ μΈκ³Ό κ°μ ν λΉμ 2κ°μ λ¬ΈμΌλ‘ λλμ΄μ Έ κ°κ° μ€νλλ©° μ€ν μμ λ μλ‘ λ€λ₯΄λ€. λ³μ μ μΈμ΄ λ¨Όμ μ΄λ£¨μ΄μ§λ€(μ΄λ μ΄κΈ° ν λΉκ°μ undefined)
Note
let varλ‘ μ μΈλ λ³μλ κ°μ μ¬ν λΉμ΄ κ°λ₯νλ€
constλ μ¬ν λΉμ΄ λΆκ°νλ©°, μ μΈμ μ΄κΈ°κ°μ μ μ΄ κ·Έ κ°μΌλ‘ μ΄κΈ°ν ν΄μ£Όμ΄μΌ νλ€
μλ°ν λ§νλ©΄, νΈμ΄μ€ν μ μν΄ λ³μκ° μ²μ μ μΈλ λ undefinedλ‘ μ μΈλκΈ°μ, μΌλ°μ μΈ κ° ν λΉλ μ¬μ€μ μ¬ν λΉμ΄λ€ μ΄ λ Όλ¦¬λ₯Ό μ μ©ν΄λ, βοΈnote μμ μ μ μ΄λ‘ μ΄ λκ°μ΄ μ μ©λλ κ²μ μ μ μλ€
ν λΉκ³Ό λ§μ°¬κ°μ§λ‘, μ¬ν λΉμ λ©λͺ¨λ¦¬ μ£Όμκ° λ°λλ€λ κ²μ μ μ μλ€ undefined, 80 μ²λΌ μ¬μ©λμ§ μλ κ°μ ==κ°λΉμ§ μ½λ ν°μ μν΄ λ©λͺ¨λ¦¬μμ μλν΄μ λλ€== λ¨! λ©λͺ¨λ¦¬μμ μΈμ ν΄μ λλμ§λ λͺ¨λ₯Έλ€
jsκ°λ°μκ° λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ΄μ©ν΄ κ°μ μ κ·Όνλ©΄ μ λλ€λ κ²μ λ€μ νλ² κΈ°μ΅νκ³ λμ΄κ°μ
[!note] unmanaged lang VS managed lang
Cμ κ°μ΄ κ°λ°μκ° λͺ μμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉ, ν΄μ ν μ μλ μΈμ΄λ₯Ό unmanaged language λΌκ³ νλ€
μλ°μ€ν¬λ¦½νΈμ κ°μ΄ κ°λ°μκ° μ§μ λ©λͺ¨λ¦¬ μ μ΄λ₯Ό ν μ μκ³ , κ°λΉμ§ μ½λ ν°κ° μλμΌλ‘ μ μ΄ν΄μ£Όλ κ²μ managed language λΌκ³ νλ€
![[Screenshot 2024-07-17 at 5.15.19 PM 1.png]] ![[Screenshot 2024-07-17 at 6.55.26 PM.png]]
κ°λΉμ§ 컬λ ν°λ λ€μκ³Ό κ°μ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μλνλ€
- μ°Έμ‘° μΉ΄μ΄ν (Reference Counting): κ°μ²΄κ° μ°Έμ‘°λλ νμλ₯Ό μΆμ νκ³ , μ°Έμ‘° νμκ° 0μ΄ λλ©΄ λ©λͺ¨λ¦¬λ₯Ό νμν©λλ€.
- λ§ν¬ μ€ μ€μ(Mark-and-Sweep): λ£¨νΈ κ°μ²΄μμ μμνμ¬ λλ¬ κ°λ₯ν λͺ¨λ κ°μ²΄λ₯Ό λ§ν¬νκ³ , λ§ν¬λμ§ μμ κ°μ²΄λ λ©λͺ¨λ¦¬μμ μ κ±°ν©λλ€.
μμ μ€λͺ νλ―μ΄, μλ³μλ, μ΄λ€ κ°μ ꡬλΆνμ¬ μλ³ ν μ μλ μ΄λ¦μ μλ―Ένλ€ μλ³μ μ΄λ¦μ μ§μλ, κ·μΉμ΄ μ‘΄μ¬νλ€
- λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(
_), λ¬λ¬κΈ°νΈ$λ‘λ§ μ΄λ£¨μ΄μ ΈμΌ νλ€ - λ¨, μ«μλ‘ μμν μλ μλ€
- μμ½μ΄λ μλ³μλ‘ μ¬μ©ν μ μλ€
ES5λΆν° μλ³μλ₯Ό λ§λ€ λ μ λμ½λ λ¬Έμλ₯Ό νμ©νκΈ° λλ¬Έμ νκΈ, μΌλ³Έμ΄ μλ³μλ μ¬μ©ν μ μλ€ μ± μμλ νκΈ μλ³μλ₯Ό λΉμΆμ² νλ€
ννΈ ν μ€μμλ νκΈλ‘ μ§λ λ³μλ₯Ό μ§λ μΈμ’ λμ νλ‘μ νΈλ₯Ό μ§νν μ μ΄ μλ€ κ΄λ ¨ κ²μλ¬Ό: μΈμ’ λμ νλ‘μ νΈ
(μμ§κΉμ§ μ¬μ©νλμ§λ λͺ¨λ₯΄κ² λ€)
λνμ μΌλ‘ 4κ°μ§ μ νμ λ€μ΄λ° 컨벀μ μ΄ μλ€
let devoceanYoung; μλ¬Έμλλ¬Έμ
let devocean_young; μλ¬Έμ_μλ¬Έμ
let DevoceanYoung; λλ¬Έμλλ¬Έμ
let strDevoceanYoung; νμ
λλ¬Έμλλ¬Έμ
μΌλ°μ μΌλ‘ λ³μλ ν¨μμ μ΄λ¦μ μΉ΄λ© μΌμ΄μ€λ₯Ό μ¬μ©νκ³ μμ±μ ν¨μ, ν΄λμ€ μ΄λ¦μ νμ€μΉΌ μΌμ΄μ€λ₯Ό μ¬μ©νλ€








