💡 자바스크립트 함수에 대해서 자세히 공부해보자
Object-Oriented
이다.sub-program
이라고도 부르고, 여러번 재사용도 가능하다.function name(param1, param2) { body... return; }
command
나 verb
의 형태로 이름을 작성하는 것이 좋음createCardAndPoint -> createCard, createPoint
function printHello() {
console.log('Hello');
}
printHello(); // Hello
function log(message) {
console.log(message);
}
log('Hello@'); // Hello@
function changeName(obj) {
obj.name = 'coder';
}
const yewon = {name : 'yewon'};
changeName(yewon);
console.log(yewon); // {name: 'coder'}
function showMessage(message, from) {
console.log(`${message} by ${from}`);
}
showMessage('Hi!');
undefined
이라고 출력해준다.function showMessage(message, from) {
if(from === undefined) {
from = 'unknown'
}
console.log(`${message} by ${from}`);
}
showMessage('Hi!'); // Hi! by unknown
undefined
일 때 원하는 default 값을 지정해 놓는다.function showMessage(message, from = 'unknown') {
console.log(`${message} by ${from}`);
}
showMessage('Hi!'); // Hi! by unknown
...
-> rest parameters
-> 배열 형태로 전달되게 된다.function printAll(...args) {
// for loop 사용법
for(let i = 0; i < args.length; i++) {
console.log(args[i]);
}
}
printAll('dream', 'coding', 'ellie');
function printAll(...args) {
// for of 문법 사용
for (const arg of args) {
console.log(arg);
}
}
printAll('dream', 'coding', 'ellie');
args
에 있는 모든 값들이 차례대로 arg
에 지정이 되고 -> 출력, 지정되고 -> 출력한다.function printAll(...args) {
// 배열의 forEach 함수 사용
args.forEach((arg) => console.log(arg));
}
printAll
함수 뒤에 .
을 찍으면 object로 전환이 되기 때문에 printAll
의 속성값들을 확인해 볼 수 있다.
let globalMessage = 'global'; // global variable
function printMessage() {
let message = 'hello'; // local variable
console.log(message);
console.log(globalMessage);
}
printMessage();
scope
임function printMessage() {
let message = 'hello'; // global variable
console.log(message);
console.log(globalMessage);
function printAnother() {
console.log(message);
let childMessage = 'hello'; // local variable
}
}
closure
function sum(a, b) {
return a + b;
}
const result = sum(1, 2); // 3
console.log(`sum: ${sum(1, 2)}`);
function printMessage() {
let message = 'hello'; // local variable
console.log(message);
console.log(globalMessage);
function printAnother() {
console.log(message);
let childMessage = 'hello';
}
// console.log(childMessage); // error
return undefined;
}
return undefined;
이 들어간 것과 똑같다. (생략이 가능)undefined
이거나 우리가 값을 지정할 수가 있다.function upgradeUser(user) {
if(user.point > 10) {
// long upgrade logic...
}
}
function upgradeUser(user) {
if(user.point <= 10) {
return;
}
// long upgrade logic...
}
return
해서 함수를 종료하고, 조건이 맞을 때만 필요한 로직을 실행하는 것이 더 좋음undefined
경우, 값이 -1
인 경우 빨리 return
하고 필요한 로직들은 그 뒤에 작성하는 것이 더 좋다.➕ 추가로 공부할 것
1. procedural language & Object-Oriented Programming 찾아보기
2. object와 class에 대해서 찾아보기
3. function은 sub-program? 말 뜻에 대해 찾아보기
4. 함수가 객체인 이유 찾아보기
5. block level scope, global level scope 공부
6.closure
공부