-
var μ΄λ μΈ μ λ μκ² λλ°?π JavaScript 2023. 2. 18. 00:33
π λ±μ₯ λ°°κ²½
λ³μ μ μΈ λ°©λ²μ λν΄ κ³΅λΆνλ€ λ³΄λ©΄,
βvarλ 무쑰건 μ¬μ©νμ§ λ§κ³ , λ³νμ§ μλ κ°μ const, λ³ν μ μλ κ°μ letμ μ¬μ©νλΌβ
μ΄λ° λ§μ λ£κ² λκ³ , λ μμ λ³ μ£Όκ΄μμ΄ μ΄λ κ² λ°μλλ €μλ€.
λ¨Έλ¦¬κ° μ‘°κΈ λ μ»€μ§ μ§κΈ μμ μ μκ°ν΄λ³΄λ©΄ κ·Έλλ μ΄μ§ μΆμνκ° λ λΆλΆμ΄ μμ§ μλ μΆλ€.
π var μ΄λ μΈ μλ μκ² λλ°?
νμΌ μμ€ν νΈλ¦¬ GUIλ₯Ό λ§λλ μ¬μ΄λ νλ‘μ νΈλ₯Ό μ§ννλ€. (μ¬κΈ°μ λ³Ό μ μμ΄μ©)
κ°λ° λμ€ μ΄λ¬ν λ¬Έμ κ° μμλ€.
컀맨λνμ (add, delete, move etc) λ³ λ€λ₯Έ μ½λλ₯Ό μ€ννλλ‘ νλ switch - case ꡬ문μ μ¬μ©νλ μ€ λ³μ βκ²°κ³Όβ λμΌν μ€μ½νμμ μ΄λ―Έ μ μΈλμλ€λ λ΄μ©μ μλ¬λ₯Ό λ§μ£Όμ³€λ€.
const validateCommand: IValidateCommand = (command, tree) => { switch (컀맨λνμ ) { case "add": const κ²°κ³Ό = μ ν¨μ±μ κ²μ½λ case "delete": const κ²°κ³Ό = μ ν¨μ±μ κ²μ½λ case "move": const κ²°κ³Ό = μ ν¨μ±μ κ²μ½λ default: ... } } // error: Identifier 'κ²°κ³Ό' has already been declared.
const, letμ λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°μ§λ€. λΈλ‘ λ 벨 μ€μ½νλ μ€κ΄νΈλ₯Ό κΈ°μ€μΌλ‘ κ·Έ λ²μκ° κ΅¬λΆλκΈ°μ switch -case ꡬ문μμ νμ΄λΌμ΄νΈλ μλ μμμ κ°μ μ€μ½νλ₯Ό 곡μ νκ² λλ€.
switch () **{ case __: case __: }**
μ¬μ€ case λ¬Έμ λΈλ‘μΌλ‘ κ°μΈμ£Όμ΄ const λ³ λ³κ°μ μ€μ½νλ₯Ό λ§λ€μ΄μ€ μ μλ λ°©λ²λ μμ§λ§β¦
λ λ€λ₯Έ μ°¨μ μ± μΌλ‘ ν¨μ λ¨μμ μ€μ½νλ₯Ό κ°λ varλ‘ λ³μλ₯Ό μ μΈν΄μ€ μ λ μλ€λ κ²μ΄μλ€.
κ° μΌμ΄μ€ λ³λ‘ λ¨ νλμ μ€νλ¬Έλ§ μ€νλκΈ°μ μλ‘μ μΌμ΄μ€ λ΄ var κ²°κ³Ό λ³μκ° μλ‘μ μν₯μ μ£Όμ§ μλλ€λ μ μμ μ¬μ©ν μ μμλ€.
switch () { case __: var κ²°κ³Ό case __: var κ²°κ³Ό }
λ¬Όλ‘ varμΌλ‘ μ μΈν λ³μλ ν¨μ μ€μ½ν λ΄ μΈμ λ λ³κ²½μ΄ κ°λ₯νκΈ°μ, λ€λ₯Έ ꡬ문μμλ μ λ°μ΄νΈ μΆμ μ΄ μ΄λ €μμ§ μ μλ€λ λ¨μ μ μκ² μ§λ§, μ΄ κ²½μ°μ²λΌ switch-case ꡬ문μμλ μ¬μ©μ΄ κ°λ₯νλ€λ μκ°μ νλ€.
νμ§λ§β¦ const, letμ varμ κ°μ μμΌλ‘ λ±μ₯νκΈ°μ κ°μ νλ λΆλΆμ λͺ νν μ§κ³ λμ΄κ°λ©΄ μ’λ€. νλ² μ΄ν΄λ³΄μ.
π κΈ°μ‘΄ varμ λ¬Έμ
λ¬Έμ 1. var λ³μλ μΈμ λ λ³κ²½ κ°λ₯νμ¬ μ΄μ μ λͺ λͺ κ·μΉμ λλ¬Έμ || _μΈλμ€μ½μ΄λ‘λ§ μ ννμμ
λ¬Έμ 2. var λ³μλ κ°μ λ³μ μ¬μ μΈμ νμ©ν¨.
κ°μ΄ λ³κ²½λμμ λ μ΄λμ λ³κ²½λμλμ§ μΆμ μ΄ μ΄λ €μμ§.
λ¬Έμ 3. var λ³μλ ν¨μ λ¨μμ μ€μ½νλ₯Ό κ°μ. λΈλ‘ μΈλΆμμ if/for λ¬Έ λΈλ‘ μΈλΆμμλ var λ³μ λ³μ μ κ·Ό κ°λ₯
function welcome(name){ if (!name){ var errMsg = "no name error!" } console.log(name); console.log(errMsg); // "no name error!". //ν¨μ λ¨μμ μ€μ½νλ₯Ό κ°μ Έ if λΈλ‘ μΈλΆμμμμλ λ³μ μ κ·Ό κ°λ₯ } welcome();
λ¬Έμ 4. λ³μ μ μΈ μ μ λ³μμ μ¬μ©μ΄ κ°λ₯ν νΈμ΄μ€ν * λ°μ
console.log(foo); // undefined var foo; console.log(bar); // Error: Uncaught ReferenceError:
(*νΈμ΄μ€ν ? λ³μ, ν¨μ λ± μ μΈλ¬Έμ μ΅μλ¨μ μ€μ½νλ‘ λμ΄μ¬λ € λ©λͺ¨λ¦¬λ₯Ό λ¨Όμ ν λΉνλ μλ°μ€ν¬λ¦½νΈ λ΄λΆ νμ. λλ¬Έμ varλ‘ μ μΈλ λͺ¨λ λ³μλ μ€μ½ν μ λμμ μ μΈκ³Ό μ΄κΈ°ν λ¨κ³κ° νλ²μ μ΄λ£¨μ΄μ Έμ λ³μ μ μΈλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°ν μ μκ²λ¨.)
π μ΄λ»κ² ν΄κ²°νλμ?
ν΄κ²°: let, const
letμΌλ‘ μ μΈλ λ³μλ λΈλ‘ λ 벨 ({})μ μ€μ½νλ₯Ό κ°μ§λ©° λ³μμ μ μΈκΉμ§ μΌμμ μ¬κ°μ§λ (Temporary Dead Zone)μ΄λΌλλ°λ‘ λΉ μ Έμ λ³μκ° μ μΈλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°ν μ μκ²λ©λλ€.
function welcome(name){ if (!name){ let errMsg = "no name error!" // λΈλ‘ μΈλΆμμ μ κ·Ό λΆκ° } console.log(name); console.log(errMsg); // Err: errMsg is not defined } welcome();
π νμ€ μμ½
λ³μμ μ μΈμλ κΈ°λ³Έμ μΌλ‘ const μ¬μ©, μ¬ν λΉμ΄ νμν κ²½μ°μλ letμ μ¬μ©νμμλ λ³ν¨μ΄ μλ€β¦
const, let λμ varμ μ¨μΌλ§ μ»μ μ μλ ν¨κ³Όμ λν μ€λμ΄ λΆμ‘±νκΈ° λλ¬Έβ¦
'π JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ