💡 함수 표현식에 대해 공부해보자!

function은function의 인자로 전달이되며,👇👇👇 그것이 가능하게 한 것이 바로 Function expression👇👇👇
const print = function () {
console.log('print');
};
print(); // print
function에 이름이 없고 function이라는 키워드를 이용해서 파라미터와 블럭을 이용한 것을 위에서 확인할 수 있다. (함수 이름 없이 필요한 부분만 작성해서 변수에 할당 가능)annoymous function이라고 함const print = function print() { // named function
console.log('print');
};
named function이라고 함const printAgain = print;
// 함수를 호출하듯이 작성하면 print에 할당된 print 함수가 실행된다.
printAgain(); // print
print를 또 다른 변수에 할당하게 되면 결국 printAgain은 위에 함수를 가르키고 있기 때문에 다시 함수를 호출하듯이 부르면 프린트가 출력되는 것을 확인할 수 있다.Function expression은 할당된 다음부터 호출이 가능print를 선언하기도 전에 호출하면 error가 발생Function declaration은 hoist가 가능하다.function randomQuiz(answer, printYes, printNo) {
if (answer === 'love you') {
printYes();
} else {
printNo();
}
}
randomQuiz함수는answer이 맞으면 호출하게 될 함수 -> printYesanswer이 틀리면 호출하게 될 함수 -> printNoprintYes, printNo 함수 2개를 전달해준다.Callback function이라고 함love you인 경우에만 printYes라는 콜백함수를 호출하게 되고, 정답이 아니면 printNo라는 콜백함수를 호출하게 된다.// annoymous function
const printYes = function () {
console.log('yes!');
}
// named function
const printNo = function print() {
console.log('no!');
}
randomQuiz('wrong', printYes, printNo); // no!
randomQuiz('love you', printYes, printNo); // yes!
printYes라는 변수에 yes!를 출력하는 함수를 할당printNo라는 변수에 no!를 출력하는 함수를 할당 randomQuiz를 호출할 때, printYes, printNo라는 콜백 함수들을 각각 전달하게 된 것!// named function
const printNo = function print() {
console.log('no!');
}
Function expression에서 이름을 쓰는 경우는const printNo = function print() {
print();
}
call stack이 다 찾다는 에러가 뜸
annoymous function 이다.const simplePrint = function () {
console.log('simplePrint!');
} // 1번
const simplePrint = () => console.log('simplePrint!'); // 2번
const add = function (a, b) {
return a + b;
} // 1번
const add = (a, b) => a + b; // 2번
const simpleMultiply = (a, b) => {
// do something more
return a * b;
};
return 키워드를 사용해서 값을 리턴해줘야한다.function hello() {
console.log('IIFE');
}
hello(); // hello
hello(); 함수를 호출하는 방식을 원래 사용했지만(function hello() {
console.log('IIFE');
})();
()로 감싸고, 끝에 함수를 호출 하듯이 ()를 적어주면 -> 바로 함수가 호출된다.function calculate(command, a, b) {
switch (command) {
case 'add':
return a + b;
case 'substract':
return a - b;
case 'divide':
return a / b;
case 'multiply':
return a * b;
case 'remainder' :
return a % b;
default :
throw Error('unknown command');
}
}
console.log(calculate('add', 2, 3)); // 5

➕ 추가로 공부할 것
1. var hoisting 복습하기
2.Callback function공부
3. recursive 함수 찾아보기
4. call stack 찾아보기