JS
Function
RRS_SH
2023. 2. 18. 23:44
이 JavaScript는 드림코딩 자바스크립트 기초강의를 보며 정리한 자료 입니다.
https://www.youtube.com/@dream-coding
https://www.youtube.com/@dream-coding
www.youtube.com
펑션은 프로그램을 구성하는 기본적인 빌딩 블록이고 서브 프로그램이라고 부르기도 한다. 여러번 재사용 가능하다는 장점이 있고, 한가지의 테스크나 어떠한 값을 계산하기 위해 사용된다.
문법
문법 funcrion name(param1, param2) { body …. return; }
함수를 만들때는 한가지의 기능만 하도록 한다. 네이밍을 할 때는 동사형태로 지정한다. 네이밍이 애매한 경우 한가지 이상의 기능을 하고 있는지 생각 해 본다.
ex)
function printHello() {
console.log('Hello');
}
printHello();
⬇️
function log(message) {
console.log(message);
}
log('Hello');
log(1234);
Parameters
function changeName(obj) {
obj.name = 'coder';
}
const tom = { name: 'tom' };
changeName(tom);
console.log(tom); // coder;
Default Parameters (added in ES6)
function showMessage(message, from) {
console.log(`${message} by ${from}`);
}
console.log('Hi!'); // Hi by undefind
⬇️
function showMessage(message, from = 'tom') {
console.log(`${message} by ${from}`);
}
console.log('Hi!');
Rest parameters (added in ES6)
// 배열 형태로 전달한다.
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('magic', 'show', 'now');
Local scope
// 밖에서는 안이 보이지 않고, 안에서만 밖을 볼 수 있다.
let globalMessage = 'global'; // global variable
function printMessage() {
let message = 'hello'; // local variable
console.log(message); // hello
console.log(globalMessage); // global
function printAnother() {
console.log(message);
let childMessage = 'hello';
}
console.log(childMessage); // X error
}
pringMessage();
Return a value
// 모든 펑션은 return한다. 없는 펑션은 return undefind이다. return undefind는 생략 가능하다.
function sum(a, b) {
return a + b;
}
const result = sum(1, 2); // 3
console.log(`sum: ${sum(1, 2)}`); // sum: 3
Early return, early exit
// 조건이 맞지 않는 경우, undefind, -1인 경우 빨리 리턴하고 true를 수행하는 것이 좋다.
function upgradeUser(user) {
if(user.point > 10) {
// logic
}
}
⬇️
function upgradeUser(user) {
if(user.point <= 10) {
return;
}
// logic
}
Function Expression
// anonymous function 이름이 없는 펑션
const print = function () {
console.log('print');
}
print(); // print
const printAgain = print;
printAgain(); // print
const sumAgain = sum;
console.log(sumAgain(1, 3));// 4
First-class Function
Js에서는 펑션을 변수에 할당 할 수 있고 펑션의 파라미터 값으로 넣을 수 있고, 리턴값으로 리턴이 가능하다. 그것을 가능하게 하는 것이 Function Expression 이다.
Function Declaration
선언 되기전에 사용가능 하게 호이스팅이 된다. 그러기에 주의를 요하며 function expression을 사용하는 것이 안전하다.
Callback Function
// 함수를 전달해서 상황에 맞게 함수를 사용하는 것을 Callback Function이라고 한다.
function randomQuiz(answer, printYes, printNo) {
if(answer === 'love you') {
printYes();
} else {
printNo();
}
}
const printYes = function () { // anonymous function 이름이 없는 펑션
console.log('yes!');
}
const printNo = function print() { // named function 이름이 있는 펑션
console.log('no!');
}
Arrow Function
// anonymous function
const simplePrint = () => console.log('simplePring!');
const add = function (a,b) { return a + b; }
⬇️
const add = (a, b) => a + b;
**or**
const multiply = (a, b) => {
return a * b;
}; // 블럭을 사용하는 경우 리턴이 있어야 한다.
IIFE: Immediately Invoked Function Expression
(function hello() {
console.log('IIFE');
})();
/*
일반적으로 선언 후 hello(); 별도로 함수를 호출하지만 괄호로 묶어주면 선언과 동시에 함수가 호출 된다.
요즘은 잘 사용하지 않는다.
*/