μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- CSS
- useRef
- position
- μλ°μ€ν¬λ¦½νΈ
- λΈλ‘κ·Έ
- λ°λΈμ½μ€3κΈ°
- useEffect
- REACT
- Flex
- fetch API
- Props
- νλ‘ νΈμλ
- μκ³ λ¦¬μ¦
- float
- μ½λ©ν μ€νΈ
- history api
- λ°λΈμ½μ€
- Gatsby
- νλ‘κ·Έλλ¨Έμ€
- Today
- Total
Daehyunii's Dev-blog
18μ₯ ν¨μμ μΌκΈ κ°μ²΄ λ³Έλ¬Έ
18μ₯ ν¨μμ μΌκΈ κ°μ²΄
Daehyunii 2022. 7. 12. 19:1518.1 μΌκΈ κ°μ²΄
<μΌκΈ κ°μ²΄μ 쑰건>
1. 무λͺ μ 리ν°λ‘€λ‘ μμ±ν μ μλ€.(λ°νμμ μμ±μ΄ κ°λ₯νλ€.)
2. λ³μλ μλ£κ΅¬μ‘°(κ°μ²΄, λ°°μ΄ λ±)μ μ μ₯ν μ μλ€.
3. ν¨μμ 맀κ°λ³μμ μ λ¬ν μ μλ€.
4. ν¨μμ λ°νκ°μΌλ‘ μ¬μ©ν μ μλ€.
μλ°μ€ν¬λ¦½νΈμ ν¨μλ μμ 쑰건μ λͺ¨λ λ§μ‘±νλ μΌκΈ κ°μ²΄λ€.
//ν¨μλ 무λͺ
μ 리ν°λ΄λ‘ μμ±ν μ μλ€.
//ν¨μλ λ³μμ μ μ₯ν μ μλ€.
const increase = function(num){
return ++num;
};
const decrease = function(num){
return --num;
};
//ν¨μλ κ°μ²΄μ μ μ₯ν μ μλ€.
const counter = {increase, decrease};
//ν¨μμ 맀κ°λ³μμ ν¨μλ₯Ό μ λ¬ν μ μλ€.
//ν¨μμ λ°νκ°μΌλ‘ ν¨μλ₯Ό μ¬μ©ν μ μλ€.
function makeCount(predicate){
let num = 0;
return function(){
num = predicate(num);
};
}
//ν¨μλ 맀κ°λ³μμκ² ν¨μλ₯Ό μ λ¬ν μ μλ€.
const increaser = makeCount(counter.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
console.log(increaser()); // 3
//ν¨μλ 맀κ°λ³μμκ² ν¨μλ₯Ό μ λ¬ν μ μλ€.
const decreaser = makeCount(counter.decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2
console.log(decreaser()); // -3
ν¨μκ° μΌκΈ κ°μ²΄λΌλ κ²μ ν¨μλ₯Ό κ°μ²΄μ λμΌνκ² μ¬μ©ν μ μλ€λ μλ―Έλ€. ν¨μλ μΌκΈ κ°μ²΄λ‘μ μΌλ° κ°μ²΄μ κ°μ΄ ν¨μμ 맀κ°λ³μμ μ λ¬ν μ μμΌλ©°, ν¨μμ λ°νκ°μΌλ‘ μ¬μ©ν μλ μλ€. μ΄λ ν¨μν νλ‘κ·Έλλ°μ κ°λ₯μΌ νλ μλ°μ€ν€λ¦½νΈμ μ₯μ μ€ νλλ€. νμ§λ§ ν¨μλ μΌλ° κ°μ²΄μλ μ°¨μ΄κ° μλ€. μΌλ° κ°μ²΄λ νΈμΆν μ μμ§λ§ ν¨μ κ°μ²΄λ νΈμΆν μ μλ€. κ·Έλ¦¬κ³ ν¨μ κ°μ²΄λ μΌλ° κ°μ²΄μλ μλ ν¨μ κ³ μ μ νλ‘νΌν°λ₯Ό μμ νλ€.
18.2 ν¨μ κ°μ²΄μ νλ‘νΌν°
ν¨μλ κ°μ²΄λ€. λ°λΌμ ν¨μλ νλ‘νΌν°λ₯Ό κ°μ§ μ μλ€. μλμ μ½λλ number ν¨μκ° κ°μ§λ νλ‘νΌν°λ€μ΄λ€.
function number(num){
return num;
}
console.dir(number);
/*
ƒ number(num)
arguments: null
caller: null
length: 1
name: "number"
prototype: {constructor: ƒ}
*/
μ΄μ²λΌ number ν¨μκ° κ°μ§λ arguments, caller, name, length, prototype νλ‘νΌν°λ λͺ¨λ ν¨μ κ°μ²΄μ λ°μ΄ν° νλ‘νΌν°λ€. μ΄λ€ νλ‘νΌν°λ μΌλ° κ°μ²΄μλ μλ ν¨μ κ°μ²΄ κ³ μ μ νλ‘νΌν°λ€.
18.2.1 arguments νλ‘νΌν°
ν¨μ κ°μ²΄μ arguments νλ‘νΌν° κ°μ arguments κ°μ²΄λ€. arguments κ°μ²΄λ ν¨μ νΈμΆ μ μ λ¬λ μΈμλ€μ μ 보λ₯Ό λ΄κ³ μλ μν κ°λ₯ν μ μ¬ λ°°μ΄ κ°μ²΄μ΄λ©°, ν¨μ λ΄λΆμμ μ§μ λ³μμ²λΌ μ¬μ©λλ€. λ€μ λ§ν΄, ν¨μ μΈλΆμμλ μ°Έμ‘°ν μ μλ€. μλ°μ€ν¬λ¦½νΈλ ν¨μμ 맀κ°λ³μμ μΈμμ κ°μκ° μΌμΉνλμ§ νμΈνμ§ μλλ€. μ μΈλ 맀κ°λ³μμ κ°μλ³΄λ€ μΈμλ₯Ό μ κ² μ λ¬νμ κ²½μ° λ§€κ°λ³μλ undefinedλ‘ μ΄κΈ°νλ μνλ₯Ό μ μ§νκ³ , 맀κ°λ³μμ κ°μλ³΄λ€ μΈμλ₯Ό λ λ§μ΄ μ λ¬ν κ²½μ° μ΄κ³Όλ μΈμλ 무μλλ€. κ·Έλ λ€κ³ μ΄κ³Όλ μΈμκ° κ·Έλ₯ λ²λ €μ§λ κ²μ΄ μλλΌ λͺ¨λ μΈμλ μ묡μ μΌλ‘ arguments κ°μ²΄μ νλ‘νΌν°λ‘ 보κ΄λλ€.
function add(x,y,z){
console.log(arguments);
return x + y + z;
}
console.log(add()); // NaN
console.log(add(1)); // NaN
console.log(add(1,2)); // NaN
console.log(add(1,2,3)); // 6
console.log(add(1,2,3,4)); // 6
/*
console.log(add(1,2,3,4));μ argumentsκ°μ²΄ μ 보
0: 1
1: 2
2: 3
3: 4
callee: ƒ add(x,y,z)
length: 4
Symbol(Symbol.iterator): ƒ values()
*/
arguments κ°μ²΄λ μΈμλ₯Ό νλ‘νΌν° κ°μΌλ‘ μμ νλ©° νλ‘νΌν° ν€λ μΈμμ μμλ₯Ό λνλΈλ€. arguments κ°μ²΄μ callee νλ‘νΌν°λ νΈμΆλμ΄ arguments κ°μ²΄λ₯Ό μμ±ν ν¨μ, μ¦ ν¨μ μμ μ κ°λ¦¬ν€κ³ arguments κ°μ²΄μ length νλ‘νΌν°λ μΈμμ κ°μλ₯Ό κ°λ¦¬ν¨λ€.
18.2.2 caller νλ‘νΌν°
caller νλ‘νΌν°λ ECMAscript μ¬μμ ν¬ν¨λμ§ μμ λΉνμ€ νλ‘νΌν°λ€. μ΄ν νμ€νλ μμ λ μλ νλ‘νΌν° μ΄κΈ°μ μ± μμλ κ΄μ¬μλ€λ©΄ μ§λμ³λ μ’λ€κ³ νμΌλ, κ³Όκ°ν λμ΄κ°κ² λ€.
18.2.3 length νλ‘νΌν°
ν¨μ κ°μ²΄μ length νλ‘νΌν°λ ν¨μλ₯Ό μ μν λ μ μΈν 맀κ°λ³μμ κ°μλ₯Ό κ°λ¦¬ν¨λ€. ( cf) arguments κ°μ²΄μ length νλ‘νΌν°λ ν¨μ νΈμΆμ, μ λ¬ λ°μ μΈμμ κ°μλ₯Ό κ°λ¦¬ν¨λ€.)
18.2.4 name νλ‘νΌν°
ν¨μ κ°μ²΄μ name νλ‘νΌν°λ ν¨μ μ΄λ¦μ λνλΈλ€. μ΅λͺ ν¨μ ννμμ κ²½μ° ES5μμ name νλ‘νΌν°λ λΉ λ¬Έμμ΄μ κ°μΌλ‘ κ°μ§λ§, ES6μμλ ν¨μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μλ₯Ό κ°μΌλ‘ κ°λλ€.
18.2.6 prototype νλ‘νΌν°
prototype νλ‘νΌν°λ μμ±μ ν¨μλ‘ νΈμΆν μ μλ ν¨μ κ°μ²΄, λ€μ λ§ν΄ constructorλ§μ΄ μμ νλ νλ‘νΌν°λ€. μΌλ° κ°μ²΄μ μμ±μ ν¨μλ‘ νΈμΆν μ μλ non-constructorμλ prototype νλ‘νΌν°κ° μλ€. prototype νλ‘νΌν°λ ν¨μκ° κ°μ²΄λ₯Ό μμ±νλ μμ±μ ν¨μλ‘ νΈμΆλ λ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€μ νλ‘ν νμ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. μ½κ² λ§ν΄, μμ±μ ν¨μ.prototypeμ΄ κ°λ¦¬ν€λ κ°μ²΄κ° μμ±μ ν¨μμ μν΄ μμ±λ μΈμ€ν΄μ€μ νλ‘ν νμ κ°μ²΄λ€.
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
20μ₯ strict mode (0) | 2022.07.16 |
---|---|
19μ₯ νλ‘ν νμ (0) | 2022.07.13 |
17μ₯ μμ±μ ν¨μμ μν κ°μ²΄ μμ± (0) | 2022.07.10 |
16μ₯ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ (0) | 2022.07.08 |
15μ₯ let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν (0) | 2022.07.06 |