μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- useRef
- REACT
- λ°λΈμ½μ€
- history api
- μλ°μ€ν¬λ¦½νΈ
- λΈλ‘κ·Έ
- Props
- νλ‘ νΈμλ
- μ½λ©ν μ€νΈ
- CSS
- νλ‘κ·Έλλ¨Έμ€
- fetch API
- Flex
- μκ³ λ¦¬μ¦
- Gatsby
- λ°λΈμ½μ€3κΈ°
- useEffect
- float
- position
- Today
- Total
Daehyunii's Dev-blog
13μ₯ μ€μ½ν λ³Έλ¬Έ
13μ₯ μ€μ½ν
Daehyunii 2022. 7. 3. 22:2313.1 μ€μ½νλ?
μ€μ½νλ μλ³μ μμ μ΄ μ μΈλ μμΉμ μν΄ λ€λ₯Έ μ½λκ° μλ³μ μμ μ μ°Έμ‘°ν μ μλ μ ν¨ λ²μλ₯Ό λ§νλ€. μ¦, μ€μ½νλ μλ³μκ° μ ν¨ν λ²μλ₯Ό λ§νλ€. μμ κ²½νν λ°μ κ°μ΄ ν¨μμ 맀κ°λ³μλ ν¨μ λͺΈμ²΄ λ΄λΆμμλ§ μ°Έμ‘°ν μ μκ³ ν¨μ λͺΈμ²΄ μΈλΆμμλ μ°Έμ‘°ν μ μλ€. μ΄κ²μ 맀κ°λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ ν¨λ²μ, μ¦ λ§€κ°λ³μμ μ€μ½νκ° ν¨μ λͺΈμ²΄ λ΄λΆλ‘ νμ λκΈ° λλ¬Έμ΄λ€.
function add(x, y){
console.log(x, y);
return x + y;
}
console.log(add(2, 5)); // 2 5 // 7
console.log(x,y); // ReferenceErrorλ°μ
λ³μλ μ½λμ κ°μ₯ λ°κΉ₯ μμλΏ μλλΌ μ½λ λΈλ‘μ΄λ ν¨μ λͺΈμ²΄ λ΄μμλ μ μΈν μ μλ€. (μ΄λ μ½λ λΈλ‘μ΄λ ν¨μλ μ€μ²©λ μ μλ€.) λ³μλ μμ μ΄ μ μΈλ μμΉμ μν΄ μμ μ΄ μ ν¨ν λ²μ, μ¦ λ€λ₯Έ μ½λκ° λ³μ μμ μ μ°Έμ‘°ν μ μλ λ²μκ° κ²°μ λλ€. μμ λ§νλ―μ΄ λ³μλΏλ§ μλλΌ λͺ¨λ μλ³μκ° κ·Έλ λ€.
var x = 'global';
function foo(){
var x = 'local';
console.log(x); // local
}
foo();
console.log(x); // global
μμ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ μ½λμ κ°μ₯ λ°κΉ₯ μμκ³Ό foo ν¨μ λ΄λΆμ κ°μ μ΄λ¦μ κ°λ x λ³μλ₯Ό μ μΈνκ³ cosole.log()λ₯Ό ν΅ν΄ xλ³μλ₯Ό μ°Έμ‘°νλ€. μ΄λ μλ°μ€ν¬λ¦½νΈ μμ§μ μ΄λ¦μ΄ κ°μ λ κ°μ λ³μ μ€μμ μ΄λ€ λ³μλ₯Ό μ°Έμ‘°ν΄μΌ ν κ²μΈμ§λ₯Ό κ²°μ ν΄μΌ νλ€. μ΄λ₯Ό 'μλ³μ κ²°μ 'μ΄λΌ νλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ μ€μ½νλ₯Ό ν΅ν΄ μ΄λ€ λ³μλ₯Ό μ°Έμ‘°ν΄μΌ ν κ²μΈμ§ κ²°μ νλ€. μ μ½λμ κ°μ₯ λ°κΉ₯ μμμ μ μΈλ x λ³μλ μ΄λμλ μ°Έμ‘°ν μ μλ€. νμ§λ§ foo ν¨μ λ΄λΆμμ μ μΈλ x λ³μλ foo ν¨μ λ΄λΆμμλ§ μ°Έμ‘°ν μ μκ³ foo ν¨μ μΈλΆμμλ μ°Έμ‘°ν μ μλ€. μ΄λ λ κ°μ λ³μλ μλ³μ μ΄λ¦μ΄ λμΌνμ§λ§ μμ μ΄ μ ν¨ν λ²μ, μ¦ μ€μ½νκ° λ€λ₯Έ λ³κ°μ λ³μλ€. λ§μ½ μ€μ½νλΌλ κ°λ μ΄ μλ€λ©΄ κ°μ μ΄λ¦μ κ°λ λ³μλ μΆ©λμ μΌμ΄ν€λ―λ‘ νλ‘κ·Έλ¨ μ 체μμ νλλ°μ μ¬μ©ν μ μλ€. ν΅μ¬μ μ€μ½ν λ΄μμ μλ³μλ μ μΌν΄μΌ νμ§λ§ λ€λ₯Έ μ€μ½νμλ κ°μ μ΄λ¦μ μλ³μλ₯Ό μ¬μ©ν μ μλ€.
β»κΈ°μ΄κ°λ
- var ν€μλλ‘ μ μΈλ λ³μ : κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ΄ νμ©λλ€.
(μ€λ³΅ μ μΈμ, μλ°μ€ν¬λ¦½νΈ μμ§μ var ν€μλκ° μλ κ²μ²λΌ λμνμ¬ μ¬ν λΉμ νκ² λ¨)
- let, const ν€μλλ‘ μ μΈλ λ³μ : κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νμ§ μλλ€.
function foo(){
var x = 1;
var x = 2; // κ°μ μ€μ½ν λ΄μμ varν€μλλ‘ μ€λ³΅ μ μΈ
console.log(x); // 2
}
foo();
function bar(){
let x = 1;
let x = 2; // κ°μ μ€μ½ν λ΄μμ letν€μλλ‘ μ€λ³΅ μ μΈ
console.log(x); // SyntaxError λ°μ
}
bar();
13.2 μ€μ½νμ μ’ λ₯
μ½λλ μ μκ³Ό μ§μμΌλ‘ ꡬλΆν μ μλ€. μ΄λ λ³μλ μμ μ΄ μ μΈλ μμΉ, μ¦ μ μ λλ μ§μμ μν΄ μμ μ΄ μ ν¨ν λ²μμΈ μ€μ½νκ° κ²°μ λλ€. μ μμμ μ μΈλ λ³μλ μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μμ΄κ³ , μ§μμμ μ μΈλ λ³μλ μ§μ μ€μ½νλ₯Ό κ°λ μ§μ λ³μλ€.
13.2.1 μ μκ³Ό μ μ μ€μ½ν
μ μμ΄λ μ½λμ κ°μ₯ λ°κΉ₯ μμμ λ§νλ€. μ μμ μ μ μ€μ½νλ₯Ό λ§λ λ€. μ μμ λ³μλ₯Ό μ μΈνλ©΄ μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μκ° λλ€. μ μ λ³μλ μ΄λμλ μ§ μ°Έμ‘°ν μ μλ€.
13.2.2 μ§μκ³Ό μ§μ μ€μ½ν
μ§μμ΄λ ν¨μ λͺΈμ²΄ λ΄λΆλ₯Ό λ§νλ€. μ§μμ μ§μ μ€μ½νλ₯Ό λ§λ λ€. μ§μμ λ³μλ₯Ό μ μΈνλ©΄ μ§μ μ€μ½νλ₯Ό κ°λ μ§μ λ³μκ° λλ€. μ§μ λ³μλ μμ μ΄ μ μΈλ μ§μκ³Ό νμ μ§μ(μ€μ²© ν¨μ)μμλ§ μ°Έμ‘°ν μ μλ€. μ§μ λ³μλ μμ μ μ§μ μ€μ½νμ νμ μ§μ μ€μ½νμμ μ ν¨νλ€.
13.3 μ€μ½ν 체μΈ
λͺ¨λ μ€μ½νλ νλμ κ³μΈ΅μ κ΅¬μ‘°λ‘ μ°κ²°λλ©°, λͺ¨λ μ§μ μ€μ½νμ μ΅μμ μ€μ½νλ μ μ μ€μ½νλ€. μ€μ½νκ° κ³μΈ΅μ μΌλ‘ μ°κ²°λ κ²μ μ€μ½ν 체μΈμ΄λΌ νλ€. λ³μλ₯Ό μ°Έμ‘°ν λ μλ°μ€ν¬λ¦½νΈ μμ§μ μ€μ½ν 체μΈμ ν΅ν΄ λ³μλ₯Ό μ°Έμ‘°νλ μ½λμ μ€μ½νμμ μμνμ¬ μμ μ€μ½ν λ°©ν₯μΌλ‘ μ΄λνλ©° μ μΈλ λ³μλ₯Ό κ²μνλ€.
var x = 'global x';
var y = 'global y';
function outer(){
var z = 'outer\'s local z';
console.log(x); // global x - outerν¨μ λͺΈμ²΄ λ΄μ xμλ³μκ° μμΌλ―λ‘ μμ μ€μ½νμ μλ μ μ x λ³μλ₯Ό μ°Έμ‘°ν¨
console.log(y); // global y - outerν¨μ λͺΈμ²΄ λ΄μ yμλ³μκ° μμΌλ―λ‘ μμ μ€μ½νμ μλ μ μ y λ³μλ₯Ό μ°Έμ‘°ν¨
console.log(z); // outer's local z - outerν¨μ λͺΈμ²΄ λ΄μ z μλ³μκ° μ‘΄μ¬νλ―λ‘ μ§μ z λ³μλ₯Ό μ°Έμ‘°ν¨
function inner(){
var x = 'inner\'s local x';
console.log(x); // inner's local x - innerν¨μ λͺΈμ²΄ λ΄μ xμλ³μκ° λ¨Όμ κ²μλλ―λ‘ ν΄λΉ μ§μ x λ³μλ₯Ό λ¨Όμ μ°Έμ‘°ν¨
console.log(y); // global y - innerν¨μ λͺΈμ²΄ λ΄μ y μλ³μκ° μκ³ >> outerν¨μ λͺΈμ²΄ λ΄μ y μλ³μκ° μμ΄ >> μ μ λ³μ yλ₯Ό μ°Έμ‘°ν¨
console.log(z); // outer's local z - innerν¨μ λͺΈμ²΄ λ΄μ z μλ³μκ° μμΌλ―λ‘, μμ μ€μ½ν outer ν¨μ λ΄μ μλ μ§μ z λ³μλ₯Ό μ°Έμ‘°ν¨
}
inner();
}
outer()
console.log(x); // global x - μ μμμ μ°Έμ‘°νλ μ½λμ΄λ―λ‘ μ μμ μλ μ μλ³μ xλ₯Ό μ°Έμ‘°ν¨
console.log(z); // ReferenceError - μ μμλ μ μλ³μ zκ° μμΌλ―λ‘ μ°Έμ‘°μλ¬ λ°μ
κ°μ₯ μ£Όμν΄μΌ ν μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ λ νμ μ€μ½νλ‘ λ΄λ €κ°λ©΄μ μλ³μλ₯Ό κ²μνλ μΌμ μλ€. μ΄λ μμ μ€μ½νμμ μ ν¨ν λ³μλ νμ μ€μ½νμμ μμ λ‘κ² μ°Έμ‘°ν μ μμ§λ§ νμ μ€μ½νμμ μ ν¨ν λ³μλ₯Ό μμ μ€μ½νμμ μ°Έμ‘°ν μ μλ€λ κ²μ΄λ€!
13.4 ν¨μ λ 벨 μ€μ½ν
μμμ μ μ νλ―μ΄ μ§μμ ν¨μ λͺΈμ²΄ λ΄λΆλ₯Ό λ§νκ³ μ§μμ μ§μ μ€μ½νλ₯Ό λ§λ λ€κ³ νμλλ°, μ΄λ μ½λ λΈλ‘μ΄ μλ ν¨μμ μν΄μλ§ μ§μ μ€μ½νκ° μμ±λλ€λ λ»μ΄λ€. κ·Έλ¬λ λ€λ₯Έ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄λ ν¨μ λͺΈμ²΄λ§μ΄ μλλΌ λͺ¨λ μ½λ λΈλ‘μ΄ μ§μ μ€μ½νλ₯Ό λ§λ λ€. μ΄λ¬ν νΉμ§μ λΈλ‘ λ 벨 μ€μ½νλΌ νλ€. νμ§λ§ var ν€μλλ‘ μ μΈλ λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘(ν¨μ λͺΈμ²΄)λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€. μ΄λ¬ν νΉμ§μ ν¨μ λ 벨 μ€μ½νλΌ νλ€. (μ°Έκ³ λ‘ let, constν€μλλ‘ μ μΈν λ³μλ λΈλ‘ λ 벨 μ€μ½ν νΉμ§μ κ°λλ€. μμΈν λ΄μ©μ λ€μ λ°°μΈ μμ )
var x = 10; // μ μλ³μxλ€.
if(true){
var x = 100; // μ μλ³μxλ€.(ν¨μ λ 벨 μ€μ½ν)
}
function local(){
var x = 1000; // μ§μλ³μxek.(ν¨μ λ 벨 μ€μ½ν)
}
console.log(x); // 100 (μ μμμ νΈμΆλμμΌλ―λ‘, μ μμμ λ³μxλ₯Ό μ°Έμ‘°ν¨)
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
15μ₯ let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν (0) | 2022.07.06 |
---|---|
14μ₯ μ μ λ³μμ λ¬Έμ μ (0) | 2022.07.04 |
12μ₯ ν¨μ (0) | 2022.07.02 |
11μ₯ μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.07.01 |
10μ₯ κ°μ²΄ 리ν°λ΄ (0) | 2022.06.29 |