Javascript10(reFactoring_함수) feat.Ellie

min seung moon·2021년 3월 6일
0

Javascript

목록 보기
12/23
const num1 = 1;
const num2 = 2;
const result = num1 + num2; // 3
console.log(result); // 3

const num3 = 1;
const num4 = 2;
const result2 = num1 + num2; // 3
console.log(result2); // 3
// 반복되는 로직(수행)이 있다면 함수를 정의해서 사용하는게 효율적이다!

// Declaration function(함수 선언)
function add(a, b) {
    return a + b;
}
// add라는 함수는 우리가 정의한 코드블록({}) 내의 기능을 포함하고 있다
// 기능의 이름을 add라고 하고 이 add는 function이라는 keyword를 통해서 함수로 정의 해준다
// 함수 이름은 짧고 간결하지만 의미 있게 사용하는게 좋다
// 함수의 인자도 의미 있는 naming을 해주는게 좋다
// a, b라는 매개 변수(인자)를 받아 온다
// 함수는 var와 마차가지로 hoisting의 대상이 된다!

// call by function(함수 호출)
const sum = add(3, 4); // 7
// 함수가 호출되면서 실질적인 값이 전달
// 함수가 호출 되면서 코드블록이 실행이 된다, return 7;
console.log(sum);

====================
=====deep dive======
====================

function add(num1, num2) {
    return num1 + num2;
}
// 함수도 동일하게 함수를 정의할 때 함수의 코드블록이 메모리 어딘가에 저장이 된다
// add라는 함수의 이름은 OBJECT처럼 메모리에 할당된 코드블록을 가리킨다(Ref)

const doSomething = add;
// doSomething이라는 메모리가 할당되는데 내부에는 add 함수가 가리키는 Ref를 갖는다

const result = doSomething(2, 3);
console.log(result); // 5

====================

function print() {
    console.log('print');
}
function print(name, age) {
    console.log(`${name} ${age}`);
}
print(); // print
print(8, 33); // print, 인자를 받지 않는 함수에는 인자를 주더라도 변화가 없다

====================

function divide(num1, num2) {
    return num1 / num2;
}

function suprise(callback) {
    //const result = callback(); // NaN
    const result = callback(2, 3);// add(2,3);, 5
    console.log(result);
}

suprise(); // error, operator not a function, 아무런 인자를 넣어주지 않았기 때문에
suprise(add); // 5
suprise(divide);  // 0.66666666666666
profile
아직까지는 코린이!

0개의 댓글