Scope-2
π‘ μ§λμκ°μλ Global Scope(μ μ μ€μ½ν), Local Scope(μ§μ μ€μ½ν)μ λν΄μ μ΄ν΄λ³΄μμ΅λλ€. μ΄λ²μκ°μλ ES6μμ λ±μ₯ν
const
,let
κ³Ό κ΄λ ¨νμ¬ Function Scope(ν¨μ μ€μ½ν)μ Block Scope(λΈλ‘ μ€μ½ν)μ λν΄μλ μμλ³΄κ² μ΅λλ€ :)
Function Scope(ν¨μ μ€μ½ν)
ν¨μ μ€μ½νλ ν¨μμ μν΄μ μκΈ°λ μ ν¨λ²μ μ
λλ€.
μ건 μ΄μ μκ°μ μ΄ν΄λ³΄μμ£ ?π
Block Scope(λΈλ‘ μ€μ½ν)
λΈλ(β{}β) μ μν΄μ μκΈ°λ μ ν¨λ²μ μ
λλ€.
μ‘°κΈ ν·κ°λ¦¬μ€ μ μλλ° κ·Έλ₯ μ½κ² {}λ‘ μμ¬μ§ κ²μ μ λΆ λΈλ‘ μ€μ½νλΌκ³ 보μλ©΄ λ©λλ€!
ex. forλ¬Έ, switchλ¬Έ, whileλ¬Έ β¦
var, const / letμ μ€μ½ν
- var: ν¨μ μ€μ½νλ₯Ό κ°λ λ³μ μ μΈμ μ¬μ©λ©λλ€.
- const / let: λΈλ‘ μ€μ½νλ₯Ό κ°λ μ§μ λ³μλ₯Ό μ μΈνλλ° μ¬μ©λ©λλ€.
- const: λ¨ νλ²λ§ ν λΉν μ μλ μμ(λ³μ)λ₯Ό μ μΈνλλ° μ¬μ©. μ¬μ μΈ, λ³μ μ¬ν λΉ λΆκ°λ₯. λ°λμ μ΄κΈ°ν νμ.
- let: μ¬μ μΈμ΄ λΆκ°λ₯. λ³μ μ¬ν λΉμ κ°λ₯.
ν¨μ μ€μ½ν
μ μΈν ν¨μ λ΄μ μλ
var
,const
μ let
μ λͺ¨λ ν΄λΉ ν¨μ λ΄μμ μ ν¨ν©λλ€.
- μμ 1 -
var
var a = 30; (function() { var a = 10; (function() { var a = 20; console.log(a); // 20 })() console.log(a) // 10 })() console.log(a); // ReferenceError: a is not defined
- μμ2 -
const
function duckHello() { const hello = 'Hello Duck!'; console.log(hello); } duckHello(); // 'Hello Duck!' console.log(hello); // Error, hello is not defined
λΈλ‘ μ€μ½ν
κ·Έλ¬λ {}(λΈλ‘) λ΄λΆμμ μ μΈν var
λ λΈλ‘ λ°κΉ₯μμλ μ ν¨νμ§λ§,
const
μ let
μ {} λ΄λΆμμλ§ μ ν¨ν©λλ€.
- μμ 1 - ifλ¬Έ
var
,let
if (true){ var var_name = 'var λ―Έλλ'; let let_name = 'let λ―Έλλ'; } console.log(var_name); // var λ―Έλλ console.log(let_name); // ReferenceError: let_name is not defined
- μμ 2 - {}
const
{ const const_name = 'const λ―Έλλ'; console.log(hello); // 'const λ―Έλλ' } console.log(hello); // Error, const_name is not defined
- μμ 3 - forλ¬Έ
var
,let
for(var var_i=0; var_i<5; var_i++){ } console.log(var_i); // 5 for(let let_i = 0; let_i < 5; let_i++){ } console.log(let_i); // ReferenceError: let_i is not defined
μ°Έκ³
https://velog.io/@ksh4820/var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90