μλ°μ€ν¬λ¦½νΈμ κΈ°μ΄μ μΈ λ΄μ©μΈ λ°μ΄ν° νμ κ³Ό λ³μ μ μΈ λ° ν λΉμ λν λ΄μ©μ λλ€ :)
μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν° μ’
λ₯λ κΈ°λ³Έ νμ
κ³Ό μ°Έμ‘° νμ
μΌλ‘ ꡬλΆλλ€.
: μμ μλ£ν, μμ λ°μ΄ν°λΌκ³ λ νλ©° λ³κ²½ λΆκ°λ₯ν κ°μ΄λ€.
1
100
cat
dog
"1"
true
false
null
undefined
null
κ³Ό undefined
μ μ°¨μ΄μ
- μ΄ λ νμ λͺ¨λλ κ°μ΄ μμμ μλ―Ένμ§λ§,
null
μ κ²½μ°μ μλμ μΌλ‘ κ°μ΄ λΉμ΄μμμ μλ―Ένκ³ ,undefined
μ κ²½μ°μ λ³μμ μ μΈλ§ μ΄λ£¨μ΄μ§κ³ , κ°μ ν λΉνμ§ μμ μνμ΄λ€.
: κ° μ체λ₯Ό 볡μ¬νλ μμ νμ κ³Ό λ¬λ¦¬ μ£Όμλ₯Ό 볡μ¬νλ€.
[1, 'cat', true]
{ a : 200 }
function sayHello() {}
λ³μ(variable)λ νλμ κ°(λ°μ΄ν°)μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ μλ―Ένλ€.
λ³μλ μ μΈμ ν΅ν΄ ν΄λΉ λ©λͺ¨λ¦¬ 곡κ°μ λ§λ€κ³ , ν λΉμ ν΅ν΄ λ°μ΄ν°λ₯Ό ν΄λΉ 곡κ°μ μ μ₯νλ€.
λ³μμ μ μΈμ λ€μμ μΈ κ°μ§ λ°©λ²μΌλ‘ μ΄λ£¨μ΄μ§λ€.
var
let
const
λ³μμ μ μΈμ ν λ²μ νλμ λ³μλ₯Ό μ μΈνλ κ²κ³Ό μ¬λ¬ λ³μλ₯Ό μ μΈνλ κ² λͺ¨λ κ°λ₯νλ€.
// νλμ λ³μ μ μΈ
let a;
// μ¬λ¬ λ³μ λμμ μ μΈ
let a, b, c;
κΈ°μ‘΄μ μλ°μ€ν¬λ¦½νΈμμ λ³μ μ μΈμ var
λ‘ κ°λ₯νμΌλ, ES6 λΆν° let
κ³Ό const
κ° μΆκ°λμ΄ μ¬μ©λκ³ μλ€.
let
κ³Ό const
λ₯Ό μ¬μ©νλκ°
- νΈμ΄μ€ν (Hoisting)κ³Ό μ€μ½ν(Scope)μ λν κ°λ¨ν μ΄ν΄
νΈμ΄μ€ν (Hoisting)
console.log(a); // output: undefined var a = 'Hello, World'; console.log(a); // output: Hello, World
νΈμ΄μ€ν μ ν¨μ μμ μ μΈλ€μ 미리 νμ΄ μ½λ μ΅μλ¨μ μ μΈνλ κ²μ΄λ€.
μ μμλ₯Ό 보면var
λ₯Ό μ¬μ©νμ¬ μ μΈλ λ³μa
κ° μ μΈλκΈ° μ΄μ μconsole.log
λ₯Ό μ€ννμμλ, λΆκ΅¬νκ³ μλ¬κ° λ°μνμ§ μμμΌλ©°undefined
λΌλ κ°μ λ°ννλ€. μ΄λ νΈμ΄μ€ν μ ν΅ν΄ μ°μ μ μΌλ‘ λ³μ μ μΈ λΆλΆλ§ λΆλ¦¬νμ¬ μ΅μλ¨μΌλ‘ λμ΄μ¬λ ΈκΈ° λλ¬Έμ΄λ€.
λΉκ΅μ κ³Όκ±°μ κ²μλ¬Όμμλ νΈμ΄μ€ν μ΄var
λ³μ μ μΈκ³Ό ν¨μμ μΈλ¬Έμμ μ΄λ£¨μ΄μ§λ€κ³ κΈ°μ¬λμ΄ μλλ°, μ€μ λ‘ μ½λλ₯Ό μμ±ν΄λ³΄λlet
κ³Όconst
, ν¨μννμ, νμ΄ν ν¨μ λ± μ λΆ νΈμ΄μ€ν μ΄ λμλ€. μ΄λ μμ μ΄νλΆν° μμ λ λ― λ³΄μΈλ€.
κ·Έλ¬λ―λ‘var
,let
,const
,function
,function*
,class
ν€μλλ₯Ό μ¬μ©ν΄ μ μΈν λͺ¨λ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ λ±)λ νΈμ΄μ€ν μ΄ λλ€κ³ 보λ κ²μ΄ λ§λ κ² κ°λ€.μ€μ½ν(Scope)
let a = 1; // a : μ μ λ³μ function local() { let b = 2; // b : μ§μ λ³μ }
μ ν¨λ²μμ μλ―Έλ₯Ό κ°λ μ€μ½νλ ν¬κ² μ½λ μ μμμμ μ°Έμ‘° κ°λ₯ν μ μ μ€μ½ν(Global scope)μ ν¨μ μ½λ λΈλ‘ λ΄μμλ§ μ°Έμ‘° κ°λ₯ν μ§μ μ€μ½ν(Local scope)λ‘ κ΅¬λΆλλ€.
λ³μλ μ μΈ μμΉμ λ°λΌ μ€μ½νκ° μ ν΄μ§κΈ° λλ¬Έμ, μ μμμ μ μΈλλ©΄ μ μ λ³μ(Global variable) μ§μ λ΄ μ μΈ λ³μλ μ§μ λ³μ(Local variable)μ΄ λλ€.
μ κ²½μ° λ³μa
λ μ μ λ³μμ΄κΈ° λλ¬Έμ μ½λ μ μμμ μ°Έμ‘°ν μ μμ§λ§, λ³μb
λ ν¨μlocal
μμμλ§ μ°Έμ‘°ν μ μλ€.
var
μlet
,const
μ μ°¨μ΄μ ν¨μ λ 벨 μ€μ½νμ λΈλ‘ λ 벨 μ€μ½ν
var
λ ν¨μ λ 벨 μ€μ½νλ₯Ό λ°λ₯΄λλ° μ΄λ λ³μμ μ€μ½νλ₯Ό ꡬλΆνλ κΈ°μ€μ΄ ν¨μλΌλ μλ―Έμ΄λ€.function func() { if (true) { var a = 1; } a = 2; console.log(a); } func(); // output : 2
μμλ‘ λ§λ
func
ν¨μμif
λ¬Έ μμμ λ³μa
μ μ μΈμ΄ μ΄λ£¨μ΄μ‘μ§λ§,var
λ ν¨μ λ 벨 μ€μ½νλ₯Ό λ°λ₯΄κΈ° λλ¬Έμif
λΈλ‘ λ°μμλ λ³μa
μ μ°Έμ‘°(μ κ·Ό)κ° κ°λ₯νλ€.
λ°λ©΄μlet
κ³Όconst
λ λΈλ‘ λ 벨 μ€μ½νλ‘ λΈλ‘ λ¨μλ‘ μ€μ½νλ₯Ό ꡬλΆνλ€.function func() { if (true) { let a = 1; } a = 2; console.log(a); } func(); // output : ReferenceError : a is not defined
κ·Έλ κΈ° λλ¬Έμ
let
μΌλ‘ μ μΈλif
λΈλ‘ λ°μ λ³μa
λ μ μκ° λμ§ μμλ€λ κ²°κ³Όκ° λμ¨λ€.
- μ 리
var
λ ν¨μ μΈλΆλΌλ©΄ μ μ λ³μμ ν΄λΉνκ³ , μ°Έμ‘°μ μμμ΄ λΉκ΅μ λ°©λνκΈ° λλ¬Έμ λλ²κΉ μ κ³Όμ μμ μμΈ νμ μ μ΄λ €μμ μ£Όκ±°λ, μ€λ³΅ μ μΈ κ°λ₯μΌλ‘ μΈν΄ μμΈ‘νμ§ λͺ»ν κ°μ λ°νμ΄ μ΄λ£¨μ΄ μ§ μ μκΈ° λλ¬Έμ λ¬Έμ κ° λλ€. κ·Έλ¬λ―λ‘ μ¬μ μΈμ΄ λΆκ°λ₯νκ³ λΈλ‘ λ 벨 μ€μ½νλ₯Ό μ§μνλlet
κ³Όconst
λ₯Ό μ¬μ©ν¨μ΄ λ°λμ§νλ€.βοΈ μΆκ°μ μΈ λ΄μ© :
let
κ³Όconst
μ μ°¨μ΄μ
κ΅¬λΆ let
const
μ¬μ μΈ X X μ¬ν λΉ O X π μΆμ²
νΈμ΄μ€ν λ° μ€μ½ν - MJ Kim's GitHub.io
μ€μ½ν - Poiemaweb
λν, λ³μ μ μΈ κ³Όμ μ€ λ³μλͺ μ μμ±νλ κ³Όμ μμ μλ³μ κ·μΉμ μ€μν΄μΌ νλ€.
μλ³μ(Identifier)λ μ΄λ¦μ λΆμΌ λ μ¬μ©νλ λ¨μ΄λ€.
λ³μλͺ , ν¨μλͺ μμ±λͺ , λ©μλλͺ λ±μ΄ μ΄μ ν΄λΉνκΈ°μ, λ³μ μ΄λ¦ μμ±μ μμ΄μλ λ€μμ μλ³μ μμ± κ·μΉμ λ°λΌμΌνλ€.π μλ³μ κ·μΉ
- ν€μλλ₯Ό μ¬μ©ν μ μλ€.
- ν€μλ : μ μ΄λ¬Έμ μμκ³Ό λ, νΉμ ν μ‘°μ λͺ©μ λ±μΌλ‘ μ°μ΄λ λ¨μ΄
- ex)
break
,for
,function
λ±- 첫 λ²μ§Έ κΈμλ λ¬Έμ, μΈλμ€μ½μ΄(
_
), λ¬λ¬μ¬μΈ($
)μΌλ‘λ§ μμ κ°λ₯νλ€.
= μ«μλ λΆκ°λ₯νλ€.- μΈλμ€μ½μ΄(
_
), λ¬λ¬μ¬μΈ($
)λ₯Ό μ μΈν νΉμλ¬Έμλ μ¬μ© λΆκ°λ₯νλ€.- 곡백μ ν¬ν¨νμ§ λͺ»νλ€.
μμ κ°μ κ·μΉμ λΆν©νμ§ μμΌλ©΄ μλ¬κ° λ°μνλ€.
λν, μλ³μ κ΄λ‘μ λν λ΄μ©μΌλ‘camelCase
μ λν λ΄μ©μ΄ μλ€.
camelCase
λ μλ³μ μμ± μ€ νλμΈλ°, μλ³μ μ 체 μ€ μ²« λ²μ§Έ λ¨μ΄λ₯Ό μ μΈν λͺ¨λ λ¨μ΄μ μμ리λ₯Ό λλ¬Έμλ‘ λ³κ²½νλ λ°©μμ΄λ€.
μλ₯Ό λ€λ©΄myname
μ΄λΌλ λ³μλͺ μ κ²½μ°,myName
μ΄λΌκ³ μμ±νλ€.
λ³μμ ν λΉμ ν λΉμ°μ°μ(=
)λ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§κ³ , x = y
λΌλ©΄, yμ κ°μ xμ ν λΉν¨μ μλ―Ένλ€.
λ³μμ ν λΉμ μ μΈκ³Ό λΆλ¦¬ν μ μμΌλ©°, ν λ²μ μ¬λ¬ λ³μλ₯Ό μ μΈν¨κ³Ό λμμ ν λΉν μ μλ€.
// μ μΈκ³Ό ν λΉ λΆλ¦¬
let a; // μ μΈ
a = 1; // ν λΉ
console.log(a); // output : 1
// ν λ²μ μ¬λ¬ λ³μλ₯Ό μ μΈκ³Ό λΆλ¦¬νμ¬ ν λΉ
let b, c, d;
b = 1, c = 2, d = 3;
console.log(b, c, d); // output : 1 2 3
// ν λ²μ μ¬λ¬ λ³μλ₯Ό μ μΈκ³Ό λμμ ν λΉ
let e = 1, f = 2, g = 3;
console.log(b, c, d); // output : 1 2 3
μμμ μΈκΈν λ°μ κ°μ΄ let
κ³Ό const
λ μ¬ν λΉμ μμμμ ꡬλΆλλλ° μ΄λ λ€μκ³Ό κ°λ€.
let a;
a = 1;
console.log(a); // output : 1
a = 2;
console.log(a); // output : 2
let a = 1;
console.log(a); // output : 1
let
μ κ²½μ° λ³μμ μ μΈκ³Ό ν λΉμ λΆλ¦¬νμ¬ μ§νν μ μκ³ , μ¬ν λΉλ κ°λ₯νλ€. λν, λ³μμ μ μΈκ³Ό ν λΉμ λμμ μ§ννλ κ²λ κ°λ₯νλ€.
const b; // SyntaxError : Const declarations require an initialization value
const b = 1;
b = 2 // TypeError: "b" is read-only
νμ§λ§, const
μ κ²½μ° μ μΈκ³Ό λμμ κ°μ ν λΉνμ§ μμΌλ©΄ μλ¬κ° λ°μνκ³ , μ¬μ μΈμ κ²½μ°μλ μλ¬κ° λ°μνλ€.
μ΄λ₯Ό ꡬλΆνμ¬ let
κ³Ό const
λ₯Ό μ μ ν μ©λμ μ¬μ©νλ©΄ λλ€!
μμ λ μ§ λ΄μ© 210803 μ μΈκ³Ό ν λΉ λΆλ¦¬ λ΄μ© λ° μλ³μ λ΄μ© μΆκ° 210805 μμ λ‘κ·Έ νλ‘ λ³κ²½
μλ νμΈμ μ°μ±λ, λΈλ‘κ·Έμ΄λ¦ μΌμ€μλ€μπ 첫 κ²μλ¬Όμ 첫 λκΈλ¬λ‘ μμ΅λλ€!
λ΄μ© κΉλνκ² μ μ 리ν΄μ£Όμ κ² κ°λ€μπ
빨리 κ°κ°ν΄μ λ΅κ²λλ λ κΈ°λ€λ¦¬κ³ μκ² μ΅λλ€π