강좌 : 유튜브 드림코딩 by 엘리
subprogram
이라고도 불린다funtion name(param1, param2) { body... return; }
naming
: doSomething, command, verbobject
in JS// 예시 1
// 'Hello' 밖에 출력할 수 없어서 쓸모가 없는 함수
function printHello() {
console.log('Hello');
}
printHello();
// 예시 2
// 'message'라는 parameter값을 받아 인자하기 때문에 원하는 메세지를 출력할 수 있다
function log(message) {
console.log(message);
}
log('Hello');
// 예시
function changeName(obj) {
// 전달된 object의 name을 coder로 변경
obj.name = 'coder'; // hxxjxx.name
}
const hxxjxx = { name: 'hxxjxx' };
changeName(hxxjxx);
console.log(hxxjxx);
→ {name: coder}
값이 대체되어 사용
// default값을 안줬을 때
// 두가지의 parameter을 받아온다
function showMessage(message, from) {
console.log(`${message} by ${from}`);
}
showMessage('Hi'); // from이 정의되어있지 않기때문에 undefined를 인자
→ Hi by undefined
// default값을 줬을 때
function showMessage1(message, from = 'unknown') {
console.log(`${message} by ${from}`);
}
showMessage1('Hi'); // default값이 지정되어있기 때문에 대체되어 인자
→ Hi by unknown
배열형태
로 전달// 예시
function printAll(...args) {
for (let i = 0; i < args.length; i++) {
console.log(args[i]);
}
// 좀더 간단하게 표현
for (const arg of args) {
console.log(arg);
}
// 더 간단하게 표현
args.forEach((arg) => console.log(arg));
}
printAll('dream', 'coding', 'hxxjxx');
지역 변수는 block안에서만
접근이 가능하고 전역 변수는 block안에서도
접근이 가능return undefined;
이 들어가지만 생략가능// 예시
function sum(a, b) {
return a + b;
}
const result = sum(1, 2); // 3
console.log(`sum: ${result}`);
// 안좋은 예시
function upgradeUser(user) {
if (user.point > 10) {
// long upgrade logic...
}
}
// 좋은 예시
function upgradeUser(user) {
if (user.point <= 10) {
return;
}
// long upgrade logic...
}
할당된 다음부터 호출이 가능
// 예시
// 함수를 선언함과 동시에 바로 print라는 변수에 할당
const print = function () { // anonymous function
console.log('print');
};
print(); // print
const printAgain = print;
printAgain(); // print
// 예시
// 정답과 정답이 맞으면 호출될 함수와 정답이 틀리면 호출하게될 함수
function randomQuiz(answer, printYes, printNo) {
if (answer === 'love you') {
printYes();
} else {
printNo();
}
}
const printYes = function () {
console.log('yes!');
};
const printNo = function () {
console.log('no');
};
randomQuiz('wrong', printYes, printNo); // no
randomQuiz('love you', printYes, printNo); // yes!
화살표 =>
를 이용해서 function을 간결하게 사용return키워드를 이용
해서 값을 return해줘야한다// 예시 1
const simplePrint = function () {
console.log('simplePrint');
};
→ const simplePrint = () => console.log('simplePrint');
// 예시 2
const add = function (a, b) {
return a + b;
};
→ const add = (a, b) => a + b;
// block을 사용할 경우
const simpleMultiply = (a, b) => {
// do something more
return a * b;
};
괄호로 묶은 뒤 호출
하듯이 하면 된다// 예시
(function hello() {
console.log('IIFE');
})();