π¨ μλ λ보기λ κ°μΈμ 곡λΆλ₯Ό μν΄ κΈ°λ‘ν νμ μ λλ€.
μ± μ μ½κΈ° μ μμλλ μ μ λ³μμ λ¬Έμ μ
λ€μμ€νμ΄μ€ ν΄λ£¨μ
μλ‘λ€λ₯Έ μ¬λμ΄ μ μΈν λ³μκ° scopeλ₯Ό ν΅ν΄ μ μλ³μμ μ κ·Όν μλ μκΈ°μ μ μλ³μμ κ²½μ° νμ μ λ¬Έμ λ₯Ό μ΄λν κ°λ₯μ±μ΄ μμ΅λλ€. νμ¬λ‘μλ μ΄κ²μ΄ μ λΆ
μ± μ μ½μ ν λ¨Έλ¦Ώμμμμ 첫 μΈμΆ
intro λ³μμ λ³μμ μλͺ μ£ΌκΈ°
- λ³μλ λ©λͺ¨λ¦¬μ ν λΉλλ κ°μ μ°Ύμκ°λ μλ³μμ μν μ ν©λλ€.
- μ μλ³μμ κ²½μ° μλͺ μ£ΌκΈ°κ° μ μ κ°μ²΄μ μλͺ μ£ΌκΈ°μ λμΌν©λλ€. μ΄ λ§μ λΈλΌμ°μ λ₯Ό λ«μ λ μ μλ³μκ° μλ©Ένλ€λ μλ―Έμ λλ€. λ©λͺ¨λ¦¬λ₯Ό μ€λκΈ°κ°λμ μ°¨μ§νκΈ° λλ¬Έμ μ μλ³μκ° λ§μμ§λ©΄ λ©λͺ¨λ¦¬ νμ©λκ° λ¨μ΄μ§ μ μλκ²μ λλ€.
- ν¨μ μ μ§μλ³μμ κ²½μ° ν¨μ μ€μ½νμμ λ±λ‘λλ©° μλͺ μ£ΌκΈ°μ κ²½μ° ν¨μμ νΈμΆκ³Ό ν¨κ» μμλκ³ λ°νλ¬Έμ΄ μ€νλκ³ λλ©΄ μλ©Έν©λλ€.(ν¨μμ μλͺ μ£ΌκΈ°μ λμΌνλ€κ³ λ³Ό μ μμ΅λλ€.)
- μλ°μ€ν¬λ¦½νΈκ° μ€νλλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ μ κ°μ²΄λ₯Ό λ‘λ?νκ³ μ μλ³μ, ν¨μμ μ μΈμ μ μ μ€μ½νμ λ±λ‘νκ³ λ°νμμ΄ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό νμ€νμ€ μ€νν©λλ€.
body μ μ λ³μμ λ¬Έμ μ
- μ μλ³μλ₯Ό μ¬μ©νλ€λ κ²μ μ묡μ κ²°ν© μ©μΈνλ κ² μ λλ€. μ½λ λͺ¨λ μμμμ ν΄λΉ λ³μλ₯Ό μ°Έμ‘°ν μ μκ³ μμ ν μ μλ€λ κ² μ λλ€. + μ½λμ κ°λ μ±μ μκ² λ©λλ€.
- namespace pollution => ??
- κΈ΄ μλͺ μ£ΌκΈ° μ΄κ²μ κΈ° introμμ μΈκΈν λΈλΌμ°μ λ₯Ό λ«κΈ° μ κΉμ§ λ³μμ κ°μ΄ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκ³ μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ νμ© μΈ‘λ©΄μμ λ¬Έμ κ° μμμ μλ―Έν©λλ€.
TAIL 무λΆλ³ν μ μ λ³μλ₯Ό ν΄κ²°ν μ μλ λ°©λ²
- μ¦μ μ€νν¨μ
- type = "module" μλ°μ€ν¬λ¦½νΈ νμΌμ λͺ¨λλ‘ νμ μ§μ νμ¬ λΆλ¬μ¨λ€λ©΄ λͺ¨λμ΄λΌλ λ€λ₯Έ μ€μ½νμ λ±λ‘λμ΄ ...
μΈμΆκ³Ό ν μ€νΈλ₯Ό λΉκ΅νλ©° λ€μ μ 리
intro λ³μμ μλͺ μ£ΌκΈ°
λ³μλ μλ¬Όκ³Ό μ μ¬νκ² μμ±λκ³ μλ©Έλλ μλͺ
μ£ΌκΈ°κ° μμ΅λλ€.
μ§μ λ³μμ μλͺ μ£ΌκΈ°
λλΆλΆμ μ§μ λ³μμ κ²½μ° ν¨μκ° νΈμΆλλ©΄ μμ±λκ³ ν¨μκ° μ’ λ£νλ©΄ μλ©Έν©λλ€.(μ§μ λ³μμ μλͺ μ£ΌκΈ°λ ν¨μμ μλͺ μ£ΌκΈ°μ μΌμΉνλ€κ³ ν μ μκ² μ£ .)
function foo(){
var x = 'local';
console.log(x); //local
return x;
}
foo();
console.log(x); //Reference x is not defined
μ§μ λ³μ xλ foo ν¨μλ₯Ό νΈμΆνλ©΄ μμ±λ©λλ€. fooν¨μλ₯Ό νΈμΆν΄μΌ ν¨μ λ΄λΆμ λ³μ μ μΈλ¬Έμ΄ μ€νλκΈ° λλ¬Έμ λλ€. ν¨μ λ΄λΆμμ μ μΈν λ³μλ ν¨μκ° νΈμΆλ μ§ν, μ½λκ° ν μ€μ© μ€νλκΈ° μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ λ¨Όμ μ€νλ©λλ€.
μ μ½λμ μ€ν μμλ μλμ κ°μ΅λλ€.
fooν¨μλ₯Ό νΈμΆ
μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ λ³μ xλ₯Ό μ μΈνκ³ undefinedλ‘ μ΄κΈ°ν
ν¨μ bodyμ μ½λλ₯Ό νμ€μ© μμ°¨μ μΌλ‘ μ€ν
xμ κ°μ ν λΉνλ μ½λλ₯Ό λ§λλ©΄ λ³μμ κ°μ΄ ν λΉλ¨
returnμΌλ‘ xλ₯Ό λ°ννλ©΄ ν¨μκ° μ’ λ£λμ΄ λ³μμ μλͺ μ£ΌκΈ°λ μ’ λ£λμ΄ μλ©Έ
μμ κ²½μ°μλ λ¬λ¦¬ μ§μ λ³μκ° ν¨μλ³΄λ€ μ€λ μμ‘΄νλ κ²½μ°λ μκΈ° λλ¬Έμ ν¨μ λ΄λΆμμ μ μΈλ μ§μ λ³μμ μλͺ μ£ΌκΈ°κ° ν¨μμ μλͺ μ£ΌκΈ°μ μΌμΉνλ€λ κ²μ΄ 100% μ°Έμ΄λΌκ³ ν μλ μμ΅λλ€. μλμ κ²½μ°λ₯Ό 보μμ£ .
const makeCounter = () => {
let value = 0;
return {
increase: () => {
value = value + 1;
},
decrease: () => {
value = value - 1;
},
getValue: () => value
}
}
const counter1 = makeCounter();
counter1 // {increase : f, decrease: f, getValue: f}
counter1λΌλ λ³μμλ makeCounterν¨μμ return κ°(ν¨μ λ°λμ μ μΈλ λ³μλ₯Ό μ°Έμ‘°νλ λ©μλλ₯Ό κ°μ§λ κ°μ²΄)μ ν λΉνμκΈ° λλ¬Έμ ν¨μ νΈμΆ μ΄νμλ κ³μνμ¬ value λ³μμ μ κ·Όν μ μλ κ²μ μ μ μμ΅λλ€. μ΄ κ²½μ°μ μ§μ λ³μμ μλͺ μ£ΌκΈ°λ λ©λͺ¨λ¦¬ 곡κ°μ΄ ν보λ μμ λΆν° λ©λͺ¨λ¦¬ 곡κ°μ΄ ν΄μ λμ΄ κ°μ© λ©λͺ¨λ¦¬ νμ λ°νλλ μμ κΉμ§λΌκ³ ν μ μμ΅λλ€. λ©λͺ¨λ¦¬ 곡κ°μ λκ΅°κ°κ° μ°Έμ‘°νκ³ μμ§ μμΌλ©΄ κ°λΉμ§ μ½λ ν°μ μν΄ ν΄μ λμ΄ κ°μ© λ©λͺ¨λ¦¬μ λ°νλλ―λ‘ λκ΅°κ°κ° μ§μλ³μλ₯Ό μ°Έμ‘°νκ³ μλ€λ©΄ ν΄λΉ λ³μλ μλ©Ένμ§ μλ κ²μ λλ€.
μ μ λ³μμ μλͺ μ£ΌκΈ°
var ν€μλλ‘ μ μΈν μ μ λ³μλ μ μ κ°μ²΄μ νλ‘νΌν°κ° λ©λλ€. μ΄λ μ μ λ³μμ μλͺ μ£ΌκΈ°κ° μ μ κ°μ²΄μ μλͺ μ£ΌκΈ°μ μΌμΉνλ€λ κ²μ μλ―Έν©λλ€. λΈλΌμ°μ μ κ²½μ° μ μκ°μ²΄λ windowμ΄λ―λ‘ μ μ λ³μλ windowμ νλ‘νΌν° μΈ κ²μ λλ€. (λΈλΌμ°μ μ’ λ£μ μ μ λ³μκ° μλ©Ένλ€κ³ ν μ μμ΅λλ€.)
body μ μ λ³μμ λ¬Έμ μ
- μ묡μ κ²°ν© : λͺ¨λ μ½λκ° μ μ λ³μλ₯Ό μ°Έμ‘°νκ³ λ³κ²½ν μ μλ€λ κ² μ λλ€. λ³μμ μ ν¨ λ²μκ° ν¬λ©΄ μ½λμ κ°λ μ±μ λ¨μ΄μ§κ³ μλμΉμκ² μνκ° λ³κ²½λ μ μμ΅λλ€.
- κΈ΄ μλͺ μ£ΌκΈ° : μ μ λ³μλ λΈλΌμ°μ μ’ λ£μ μλ©Έλλ―λ‘ μλͺ μ£ΌκΈ°κ° κΉλλ€. μλͺ μ£ΌκΈ°κ° κΈΈ μλ‘ μ μ λ³μμ μνλ₯Ό λ³κ²½ν μ μλ μκ°κ³Ό κΈ°ν λν λ§μμ§λλ€. λν λ©λͺ¨λ¦¬ 리μμ€λ κΈ΄ μκ° μλΉνκΈ°μ λ©λͺ¨λ¦¬μ μΈ‘λ©΄μμ λΉν¨μ¨ μ μ λλ€.
- μ€μ½ν μ²΄μΈ μμμ μ’ μ μ μ‘΄μ¬ : μ μ λ³μλ μ€μ½ν μ²΄μΈ μμμ μ’ μ μ μμΉνκΈ°μ κ°μ₯ λ§μ§λ§μ κ²μλ©λλ€.
- λ€μμ€νμ΄μ€ μ€μΌ : νμΌμ΄ λΆλ¦¬λμ΄ μμ΄λ νλμ μ μ μ€μ½νλ₯Ό 곡μ νλ€λ κ²μ΄ μλ°μ€ν¬λ¦½νΈμ κ°μ₯ ν° λ¬Έμ μ μΈλ° λ§μ½ λ€λ₯Έ νμΌμμ κ°μ μ΄λ¦μ μ μ λ³μλ ν¨μκ° κ°μ μ€μ½νμ μμ κ²½μ° μ ν λ€λ₯Έ κ²°κ³Όλ₯Ό λ³Ό κ°λ₯μ±μ΄ μμ΅λλ€.
TAIL μ μ λ³μμ μ¬μ©μ μ΅μ νλ λ°©λ²
- μ¦μ μ€ν ν¨μ : ν¨μμ μ μμ λμμ νΈμΆλλ μ¦μ μ€ν ν¨μλ λ¨ ν λ²λ§ νΈμΆλ©λλ€. λͺ¨λ μ½λλ₯Ό μ¦μ μ€ν ν¨μλ‘ κ°μΈλ©΄ λͺ¨λ λ³μλ μ§μ λ³μκ° λ©λλ€.
(function(){ var foo = 10; // μ¦μ μ€ν ν¨μμ μ§μ λ³μ // ... }()); console.log(foo); // ReferenceError: foo is not definedβ
- λ€μμ€νμ΄μ€ κ°μ²΄ : μ μμ λ€μμ€νμ΄μ€ μν μ λ΄λΉν κ°μ²΄λ₯Ό μμ±νκ³ μ μ λ³μμ²λΌ μ¬μ©νκ³ μΆμ λ³μλ₯Ό νλ‘νΌν°λ‘ μΆκ°νλ λ°©λ².
var MYAPP = {}; MYAPP.name = 'Lee'; console.log(MYAPP.name); // Lee
- λͺ¨λ ν¨ν΄ : λͺ¨λ ν¨ν΄μ ν΄λμ€λ₯Ό λͺ¨λ°©ν΄μ κ΄λ ¨μ΄ μλ λ³μμ ν¨μλ₯Ό λͺ¨μ μ¦μ μ€ν ν¨μλ‘ κ°μΈ νλμ λͺ¨λμ λ§λλ κ²μ
λλ€. λͺ¨λ ν¨ν΄μ ν΄λ‘μ λ₯Ό κΈ°λ°μΌλ‘ λμνλ©° μ μ λ³μμ μ΅μ λ λ¬Όλ‘ μΊ‘μνκΉμ§ ꡬνν μ μμ΅λλ€.(μΊ‘μνλ κ°μ²΄μ νΉμ νλ‘νΌν°μ λ©μλλ₯Ό μλνλλ° μ¬μ©λκΈ°λ ν©λλ€.) λλΆλΆμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μλ λ¬λ¦¬ μ κ·Ό μ νμκ° μκΈ° λλ¬Έμ λͺ¨λ ν¨ν΄μ ν΅ν΄μ μ 보μ κ³΅κ° μ¬λΆλ₯Ό κ²°μ ν μ μμ΅λλ€.
value λ³μλ μΈλΆμμ μ κ·Όν μ μλ private memberμ΄κ³ , makeCounter ν¨μλ μΈλΆμ λ ΈμΆνκ³ μΆμ λ³μλ ν¨μλ₯Ό κ°μ²΄μ λ΄μ λ°ννκ³ μ΄λ λ°νλλ κ°μ²΄μ νλ‘νΌν°λ μΈλΆμ λ ΈμΆλλ νΌλΈλ¦ λ©€λ²μ λλ€.var makeCounter = (function(){ let value = 0; return { increase: () => { value = value + 1; }, decrease: () => { value = value - 1; }, getValue: () => value }; }());
- ES6 λͺ¨λ : es6 λͺ¨λμ νμΌ μ체μ λ
μμ μΈ λͺ¨λ μ€μ½νλ₯Ό μ 곡νλ―λ‘ λͺ¨λ λ΄μμ var ν€μλλ‘ μ μΈν λ³μλ λμ΄μ μ μ λ³μκ° μλλ©° windowκ°μ²΄μ νλ‘νΌν°λ μλκ² λ©λλ€. scriptνν¬μ type="module" μμ±μ μΆκ°νλ©΄ λ‘λλ μλ°μ€ν¬λ¦½νΈ νμΌμ λͺ¨λλ‘μ λμν©λλ€.(λͺ¨λμ νμΌ νμ₯μλ mjsλ₯Ό κΆμ₯νλ€κ³ ν©λλ€. )
<script type="module" src="app.mjs"></script>β
μΆμ²: λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive
'JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript] λΉνΈμΈ κ°μ²΄ (0) | 2021.11.05 |
---|---|
[JavaScript] Symbol (0) | 2021.10.23 |
Detail of prototype in Javascript (0) | 2021.10.06 |
[λ²μ] Introduction to Promises in JavaScript μλ°μ€ν¬λ¦½νΈμμμ promise μκ° (0) | 2021.09.18 |
[λ²μ] prototypes in JavaScript μλ°μ€ν¬λ¦½νΈμμμ νλ‘ν νμ (0) | 2021.09.17 |