π¦ Day25
// ν¨μ μ μΈλ¬Έ
function mul(x, y){
return x * y;
}
// ν¨μ ννμ
let mulXY = function(x, y){
return x * y;
}
console.log(mulXY(2,5)); // 10
// μ½λ°± ν¨μ
function calc(x, y, c) {
c(x + y);
return x + y;
}
function write(x){
document.write('μ½λ°±ν¨μ ',x);
}
calc(10, 20, write); // μ½λ°±ν¨μ 30
μκΈ° μμ μ νΈμΆ(μ¬κ· νΈμΆ)νλ ν¨μ. λ°λ³΅λλ μ²λ¦¬λ₯Ό μν΄ μ¬μ©λλ€.
// factorial
function factorial(n){
if(n <= 1) {
return n
}
return n * factorial(n-1)
}
// factorial(5) == 5 * factorial(4) == 5 * 24
// factorial(4) == 4 * factorial(3) == 4 * 6
// factorial(3) == 3 * factorial(2) == 3 * 2
// factorial(2) == 2 * factorial(1) == 2 * 1
// factorial(1) == 1
// λ¬Έμμ΄ λ€μ§κΈ°
function reverse(text){
text += ''
if(text.length <= 1){
return text
}
return reverse(text.slice(1))+text[0]
}
reverse('hello')
'olleh'
// fibonacci
// 1, 1, 2, 3, 5, 8, 13, 21
function fib(n){
if(n <= 2) {
return n
}
return fib(n-1) + fib(n-2)
}
// μΌμͺ½ functionλ§ λ°λΌκ°μΌλ
// fib(4) == fib(3) + fib(2)
// fib(3) == fib(2) + fib(1) == 3
// fib(2) == 2
// fib(1) == 1
// μ€λ₯Έμͺ½ κ°μΈ fib(2)λ₯Ό λ€μ ν΄μΌνλ μν©!!
// fib(2) == 2
// μ΅λͺ
μ¦μ μ€ν ν¨μ
(function () {
var a = 1;
var b = 2;
return a + b;
}());
// κΈ°λͺ
μ¦μ μ€ν ν¨μ
(function foo() {
let a = 3;
let b = 5;
return a * b;
}());
foo(); // ReferenceError: foo is not defined
// foo() ν¨μκ° κ·Έλ£Ή μ°μ°μμΈ () λ΄μ μμΌλ―λ‘ () λ°μμ μ°Έμ‘° ν μ μμ΄μ μΈλΆμμ νΈμΆν μ μλ€.
map()
λ©μλλ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ°μ μ½λ°±ν¨μλ₯Ό λ°λ³΅ νΈμΆνκ³ μ½λ°±ν¨μμ 리ν΄κ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€. (μλ³Έλ°°μ΄μ λ³κ²½λμ§ μλλ€!)
const array = [1,2,3];
const newArray = array.map(elem => elem * 2)
console.log(newArray); // [2,4,6]
console.log(array); // [1,2,3]
const x = [10, 20, 30];
function test(a) {
a[0] = 10000;
}
test(x);
console.log(x); // [10000, 20, 30]
const y = 10;
function test(a) {
a = 10000;
}
test(y)
console.log(y) // 10
λ‘κ·ΈμΈ μ€ν¨νμ λ λ³΄ν΅ 'μμ΄λ λλ ν¨μ€μλκ° μΌμΉνμ§ μμ΅λλ€.'λΌλ λ¬Έκ΅¬κ° νμλλ€.
μ μμ΄λλ ν¨μ€μλ λ μ€μ 무μμ μλͺ» μ
λ ₯νλμ§ μλ €μ£Όμ§ μμκΉ? μ΄λ 보μμμ μ΄μ λ‘, μμ΄λλ ν¨μ€μλ λ μ€ μ΄λ κ±Έ μλͺ» μ
λ ₯νλμ§ μ μΆνλ κ²μ λ°©μ§νμ¬ ν΄νΉ λ±μ μ 보보μ μ΄μ λ°μμ λ§κΈ° μν΄μμ΄λ€. μλ₯Ό λ€μ΄ 'tina'λΌλ μμ΄λκ° μ΄λ ν μΉμ¬μ΄νΈμμ μ¬μ©λκ³ μμλ λ€λ₯Έ μ¬μ΄νΈμ κ°μ λμΌ μμ΄λλ₯Ό μ¬μ©ν΄μ λ‘κ·ΈμΈ μλλ₯Ό νμ¬ λ‘κ·ΈμΈ μ€ν¨μ 'ν¨μ€μλκ° νλ Έμ΅λλ€' λΌκ³ μλ €μ€λ€λ©΄ μμ΄λλ λ§κ² μ
λ ₯νλ€λ λ»μ΄ λλ―λ‘'tina'λΌλ μμ΄λλ‘ κ·Έ μ¬μ΄νΈμ κ°μ
μ΄ λμ΄μλ€λ κ²μ μμλΌ μ μλ€. κ³μλ λ‘κ·ΈμΈ μλλ‘ ν΄λΉ κ³μ μ μ¬μ©νμ§ λͺ»νκ² λ μλ μκ³ ν΄νΉμ μνμ±λ μμΌλ―λ‘ κ΅¬μ²΄μ μΌλ‘ μ΄λ κ²μ μλͺ» μ
λ ₯νλμ§ μλ €μ£Όμ§ μλλ€.
μ€λ μμ
μμ Map
μ λ°°μ λλ° μ μλμ΄ Map
μ΄ λμ¨ λ°°κ²½μ μ€λͺ
ν΄μ£Όμ
¨λ€.
const obj = {
a: 'a',
b: 'b',
}
μμ κ°μ κ°μ²΄κ° μλ€κ³ νμλ keys()
λλ values()
λ₯Ό μ¬μ©ν΄μ ν΄λΉ κ°μ²΄μ keyκ°λ§ νΉμ valueκ°λ§ μμλ΄κ³ μΆμλ° μλ°μ€ν¬λ¦½νΈμμλ obj.keys()
, obj.values()
μ²λΌ μΈ μ μλ€. κ·ΈλΌ κ·Έλ κ² μ¬μ©ν μ μκ²λ μμ ν΄μ£Όλ©΄ λλλ° μμ νλλμ Map
μ κ°λ
μ μλ‘ λ§λ€μλ€κ³ νλ€π€¦ββοΈ
μλ°μ€ν¬λ¦½νΈλΌλ μΈμ΄λ μ°Έ... μλ©΄ μμλ‘ ν₯λ―Έλ‘κΈ°λ νμ§λ§ ννΈμΌλ‘λ μ΄ν΄ν μ μλ λΆλΆλ λ§μ κ² κ°λ€γ
γ
μ¬μ€ μμ
μ λ§μ΄ λͺ» λ°λΌκ°λ€.. Map λΆλΆ μ§λ λκ°λ κ±°μ λ°λΌκ°μ§ λͺ»νλ€.. μ¬κ·ν¨μμ call by value λΆλΆλ μ€λͺ
μ λ€μΌλ©΄ μ΄ν΄λ λλλ° λμκ² κ·Έκ±Έ λ€μ μ€λͺ
ν΄λ³΄λΌκ³ νλ©΄ λͺ»ν κ² κ°λ€. κ·Έλ λ€λ 건 μμ ν μ΄ν΄λ₯Ό λͺ»νλ€λ λ»μ΄κ² μ§...
μ΄λ²μ£Ό μ£Όλ§μ μ΄ν΄λͺ»ν λΆλΆ λ€μ 보면μ 곡λΆν΄μΌκ² λ€
μ€ μ€λ λ°°μ΄ κ²νκ³ μ λͺ©λ€μ΄ νλ©΄ μ€λ₯Έμͺ½μ μ 리λμ΄μ λμ€λ κ±° λ무 μ κΈ°ν΄μ.. κ·Έλ¦¬κ³ μμ λ€λλ TILμ μ μμ΄κ΅°μπ μ mapμ΄ λμ¨ μ΄μ μ½κ° λμ³€λλ° λλΆμ μκ³ κ°λλ€π