π λ³μ(Variable)
π λ³μ(Variable)
λ³μ(Variable)
λ
- νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν
λ©λͺ¨λ¦¬ κ³΅κ° μ체
λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μμλ³νκΈ° μν΄ λΆμΈ μ΄λ¦
κ°μ μμΉ
λ₯Ό κ°λ¦¬ν€λ μμ§μ μΈ μ΄λ¦
βοΈ λ³μ μ΄λ¦(λ³μλͺ
) : λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μλ³ν μ μλ κ³ μ ν μ΄λ¦
βοΈ λ³μ κ° : λ³μμ μ μ₯λ κ°
βοΈ ν λΉ(λμ
,μ μ₯/assignment) : λ³μμ κ°μ μ μ₯νλ κ²
βοΈ μ°Έμ‘°(reference) : λ³μμ μ μ₯λ κ°μ μ½μ΄ λ€μ΄λ κ²
// μμ : 10 + 20μ μ°μ°κ²°κ³Ό 30μ resultλΌλ λ³μμ μ μ₯ν κ²
var result = 10 + 20;
π‘ λ³μμ μ¬λ¬ κ°μ κ°μ μ μ₯νλ λ°©λ²
λ³μλ νλμ κ°μ μ μ₯
νκΈ° μν λ©μ»€λμ¦
μ¬λ¬ κ°μ κ°μ μ μ₯νλ €λ©΄ μ¬λ¬ κ°μ λ³μλ₯Ό μ¬μ©ν΄μΌ νλ€.
λ¨, λ°°μ΄μ΄λ κ°μ²΄κ°μ μλ£κ΅¬μ‘° μ¬μ©νλ©΄ μ¬λ¬ κ°μ κ°μ κ·Έλ£Ήνν΄μ νλμ κ°μ²λΌ μ¬μ© κ°λ₯
// λ³μλ νλμ κ°μ μ μ₯νκΈ° μν μλ¨
var userId = 1;
var userName = "Lee";
// κ°μ²΄λ λ°°μ΄ κ°μ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νλ©΄ μ¬λ¬ κ°μ κ°μ νλλ‘ κ·Έλ£Ήνν΄μ νλμ κ°μ²λΌ μ¬μ©ν μ μμ
var user = { id: 1, name: 'Lee' };
var users = [
{ id: 1, name: 'Lee'},
{ id: 2, name: 'Kim'}
];
π μλ³μ(Identifier)
μλ³μ(Identifier)
λ μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λ§νλ€.
- μλ³μ resultλ κ° 30μ μλ³ν μ μλ€.
- μ΄λ₯Ό μν΄ resultλ κ° 30μ΄ μ μ₯λμ΄ μλ
λ©λͺ¨λ¦¬ μ£Όμ(0x0669F913)λ₯Ό κΈ°μ΅
νλ€. - μ¦, μλ³μλ κ°μ΄
μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μ£Όμμ λ§€ν κ΄κ³
λ₯Ό λ§ΊμΌλ©°, λ§€ν μ 보λ λ©λͺ¨λ¦¬μ μ μ₯λμ΄μΌ νλ€.
μλ³μλ κ°μ΄ μλλΌ
λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅
νκ³ μλ€.
μλ³μλ‘ κ°μ ꡬλ³ν΄μ μλ³νλ€λ κ² = μλ³μκ° κΈ°μ΅νκ³ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ κ°μ μ κ·Όν μ μλ€λ μλ―Έ
μ¦, μλ³μλλ©λͺ¨λ¦¬ μ£Όμμ λΆμΈ μ΄λ¦
μ΄λΌκ³ ν μ μμ
- λ³μ, ν¨μ, ν΄λμ€ λ±μ μ΄λ¦μ λͺ¨λ μλ³μ
- λ³μ μ΄λ¦ -> λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ λ³μ κ° μλ³
- ν¨μ μ΄λ¦ -> λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ ν¨μλ₯Ό μλ³
- μ¦, λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ μ΄λ€ κ°μ μλ³ν μ μλ μ΄λ¦μ λͺ¨λ μλ³μ
π λ³μ μ μΈ(Variable Declaration)
λ³μ μ μΈ(Variable Declaration)
μ λ³μλ₯Ό μμ±νλ κ²
κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό μ°κ²°ν΄μ κ°μ μ μ₯ν μ μκ² μ€λΉνλ κ²
- λ³μλ₯Ό μ¬μ©νλ €λ©΄ λ°λμ μ μΈμ΄ νμ
- λ³μ μ μΈμ
var
,let
,const
ν€μλ μ¬μ© - ES6μμ
let, const ν€μλ
λμ λμμ, μ΄ μ κΉμ§λvar ν€μλ
λ§ μ¬μ©νλ€.
π‘ var ν€μλ λ¨μ
λΈλ‘ λ 벨 μ€μ½ν(Block-Level Scope)λ₯Ό μ§μνμ§ μκ³ , ν¨μ λ 벨 μ€μ½ν(Functional-Level Scope)λ₯Ό μ§μνλ€.
μ΄λ‘ μΈν΄ μλμΉ μκ² `μ μ λ³μκ° μ μΈ`λμ΄ μ¬κ°ν λΆμμ©μ΄ λ°μν μ μλ€.
μ΄λ° var ν€μλμ λ¨μ μ 보μνκΈ°μν΄ λ±μ₯ν κ²λ€μ΄ ES6μ λμ
λ `letκ³Ό const` λ€.
μ΄ λμ `λΈλ‘ λ 벨 μ€μ½νλ₯Ό μ§μ`νλ€.
π‘ ν€μλ(Keyword)
μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό ν΄μνκ³ μ€ννλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μνν λμμ κ·μ ν μΌμ’
μ λͺ
λ Ήμ΄
- λ³μ μ μΈλ¬Έμ
λ³μ μ΄λ¦μ λ±λ‘
νκ³κ°μ μ μ₯ν λ©λͺ¨λ¦¬ 곡κ°μ ν보
νλ€. - λ³μ μ μΈν μ΄ν, λ³μμ κ°μ μμ§ ν λΉνμ§ μμλ€.
- λ°λΌμ, ν보λ λ©λͺ¨λ¦¬ 곡κ°μ λΉμ΄μμ κ²μΌλ‘ μκ°ν μ μμΌλ ν보λ λ©λͺ¨λ¦¬ 곡κ°μλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄
undefined κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°ν
λλ€.
π‘ undefined
undefinedλ μλ°μ€ν¬λ¦½νΈμμ μ 곡νλ μμ νμ
μ κ°(Primitive value)μ΄λ€.
λ³μ μ μΈμ 2λ¨κ³μ κ±°μ³ μννλ€.
μ μΈ λ¨κ³
: λ³μ μ΄λ¦μ λ±λ‘ν΄μ μλ°μ€ν¬λ¦½νΈ μμ§μ λ³μμ μ‘΄μ¬λ₯Ό μλ¦°λ€.μ΄κΈ°ν λ¨κ³
: κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ μ묡μ μΌλ‘ undefinedλ₯Ό ν λΉν΄ μ΄κΈ°ννλ€.
- var let const ν€μλλ₯Ό μ¬μ©ν λ³μ μ μΈμ μ μΈλ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§ν λλ€.
- μλ₯Ό λ€μ΄ var score;λ μ μΈ λ¨κ³λ₯Ό ν΅ν΄ λ³μ μ΄λ¦ scoreλ₯Ό λ±λ‘νλ€.
- μ΄κΈ°ν λ¨κ³λ₯Ό ν΅ν΄ score λ³μμ μ묡μ μΌλ‘ undefinedλ₯Ό ν λΉν΄ μ΄κΈ°ννλ€.
- λ°λΌμ, var ν€μλλ‘ μ μΈν λ³μλ μ΄λ ν κ°λ ν λΉνμ§ μμλ κΈ°λ³Έμ μΌλ‘ undefined λΌλ κ°μ κ°λλ€.
π‘ μ°λ κΈ° κ°(Garbage value)
μ΄κΈ°ν λ¨κ³λ₯Ό κ±°μΉμ§ μμΌλ©΄ ν보λ λ©λͺ¨λ¦¬ 곡κ°μλ μ΄μ μ λ€λ₯Έ μ ν리μΌμ΄μ
μ΄ μ¬μ©νλ κ°μ΄ λ¨μ μμ μ μλ€.
μ΄λ¬ν κ°μ "μ°λ κΈ° κ°(Garbage value)" λΌκ³ νλ€.
μλ°μ€ν¬λ¦½νΈμμ var ν€μλλ μ묡μ μΌλ‘ undefined κ°μΌλ‘ μ΄κΈ°νλ₯Ό μννκΈ° λλ¬Έμ μ΄λ¬ν μνμΌλ‘λΆν° μμ νλ€.
- μ μΈνμ§ μμ μλ³μμ μ κ·Όνλ©΄
ReferenceError(μ°Έμ‘° μλ¬)
κ° λ°μνλ€. - μλ³μλ₯Ό ν΅ν΄ κ°μ μ°Έμ‘°νλ € νμ§λ§ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ±λ‘λ μλ³μλ₯Ό μ°Ύμ μ μμ λ λ°μνλ μλ¬
π λ³μ μ μΈμ μ€ν μμ κ³Ό λ³μ νΈμ΄μ€ν
λ³μ νΈμ΄μ€ν
(variable hoisting)
μ λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ μ νΉμ§
console.log(score); // undefined
var score; // λ³μ μ μΈλ¬Έ
- μλ°μ€ν¬λ¦½νΈ μ½λλ μΈν°ν리ν°μ μν΄ ν μ€μ© μμ°¨μ μΌλ‘ μ€ν
- console.log(score);κ° κ°μ₯λ¨Όμ μ€ν
- var score; μ€ν
- console.log(score);κ° μ€νλλ μμ μλ μμ§ score λ³μμ μ μΈμ΄ μ€νλμ§ μμμ
- μ°Έμ‘° μλ¬κ° λ°μν κ² μ²λΌ 보μ -> νμ§λ§ undefinedκ° μΆλ ₯
- μλ°μ€ν¬λ¦½νΈ μμ§μ μμ€μ½λλ₯Ό ν μ€μ© μμ°¨μ μΌλ‘ μ€ννκΈ°μ μμ λ¨Όμ
μμ€μ½λμ νκ° κ³Όμ
μ κ±°μΉλ©΄μ μμ€μ½λλ₯Ό μ€ννκΈ° μν μ€λΉλ₯Ό νλ€. - μμ§μ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έ(λ³μ μ μΈλ¬Έ, ν¨μ μ μΈλ¬Έ λ±)μ μμ€μ½λμμ μ°Ύμλ΄ λ¨Όμ μ€ν
- μμ€μ½λμ νκ° κ³Όμ μ΄ λλλ©΄ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έμ μ μΈνκ³ μμ€μ½λλ₯Ό ν μ€μ© μμ°¨μ μ€ν
- μ¦,
λ³μ μ μΈμ΄ μμ€μ½λμ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ λ¨Όμ μ€ν
->λ³μ μ μΈμ΄ μ΄λμ μμΉνλ μκ΄μμ΄ μ΄λμλ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
( ReferenceErrorκ° λ°μνμ§ μλ μ΄μ )
π κ°μ ν λΉ/μ¬ν λΉ
κ°μ ν λΉ(assignment)/λμ
,μ μ₯
ν λλ ν λΉ μ°μ°μ =λ₯Ό μ¬μ©νλ€.
var score; // λ³μ μ μΈ
score = 80; // κ°μ ν λΉ
var score = 80; // λ³μ μ μΈκ³Ό κ°μ ν λΉ
π‘ "λ³μ μ μΈ(μ μΈ λ¨κ³ & μ΄κΈ°ν λ¨κ³)"μ΄ μμ€μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ μμ , μ¦ λ°νμ(Runtime)μ΄ μλλΌ κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€.
console.log(score); // undefined
score = 80; // κ°μ ν λΉ
var score; // λ³μ μ μΈ
console.log(score); // 80
- λ³μ μ μΈ : λ°νμ μ΄μ μ λ¨Όμ μ€ν
- κ°μ ν λΉ : λ°νμμ μ€ν
κ°μ μ¬ν λΉ
μ μ΄λ―Έ κ°μ΄ ν λΉλμ΄ μλ λ³μμ μλ‘μ΄ κ°μ λλ€μ ν λΉνλ κ²
var score = 80; // λ³μ μ μΈκ³Ό κ°μ ν λΉ
score = 90; // κ°μ μ¬ν λΉ
- μ¬ν λΉμ λ³μμ
μ μ₯λ κ°
μλ€λ₯Έ κ°μΌλ‘ λ³κ²½
νλ€. - κ°μ μ¬ν λΉ ν μ μμ΄μ λ³μμ μ μ₯λ κ°μ
λ³κ²½ν μ μλ€
λ©΄ λ³μκ° μλλΌμμ(constant)
λΌ νλ€.- μμλ ν λ² μ ν΄μ§λ©΄ λ³νμ§ μλ κ°, ν λ²λ§ ν λΉν μ μλ λ³μ
π‘ const ν€μλ
const ν€μλλ λ¨ ν λ²λ§ ν λΉν μ μλ λ³μλ₯Ό μ μΈνλ€.
const ν€μλλ₯Ό μ¬μ©νλ©΄ μμλ₯Ό νν ν μ μλ€.
π μλ³μ λ€μ΄λ° κ·μΉ
- μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μ«μ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ₯Ό ν¬ν¨ν μ μλ€.
- λ¨ μλ³μλ νΉμλ¬Έμλ₯Ό μ μΈν λ¬Έμ, μΈλμ€μ½μ΄(_), λ¬λ¬ κΈ°νΈ($)λ‘ μμν΄μΌνλ€.
μ«μλ‘ μμνλκ²μ νμ©νμ§ μλλ€.
- μμ½μ΄λ μλ³μλ‘ μ¬μ©ν μ μλ€.
- μ : if, class, const, do, delete, extends λ±λ±
// μΉ΄λ© μΌμ΄μ€(camelCase)
var firstName;
// μ€ν
μ΄ν¬ μΌμ΄μ€(snake_case)
var first_name;
// νμ€μΉΌ μΌμ΄μ€(PascalCase)
var FirstName;
// νκ°λ¦¬μΈ μΌμ΄μ€(typeHungarianCase)
var strFirstName; // type + identifier
var $elem = document.getElementById('myId'); // DOM λ
Έλ
var observable$ = fromEvent(document, 'click'); // RxJS μ΅μ λ²λΈ
- λ³μλ ν¨μμ μ΄λ¦μλ μΉ΄λ© μΌμ΄μ€ μ¬μ©
- μμ±μ ν¨μ, ν΄λμ€μ μ΄λ¦μλ νμ€μΉΌ μΌμ΄μ€
https://github.com/gxnie/modernJS__deepDive/blob/main/ch04/Variable.md?plain=1
modernJS__deepDive/ch04/Variable.md at main · gxnie/modernJS__deepDive
Contribute to gxnie/modernJS__deepDive development by creating an account on GitHub.
github.com
'π§‘ JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] μλ°μ€ν¬λ¦½νΈμμ thisλ? (0) | 2025.04.06 |
---|---|
[JS/νΈλ¬λΈμν ] 404 μ€λ₯ ν΄κ²°νκΈ°(Failed to load resource: ~ ) (0) | 2025.04.02 |
[JS] ννμκ³Ό λ¬Έ (0) | 2025.02.19 |
[JS] λ°μ΄ν°νμ (Data Type) (0) | 2025.02.14 |
[JS] Math.floor()λ? (0) | 2025.02.10 |