name='unknown'은 만약 함수를 실행했을 때 name을 전달해주지 않았다면 default로 unknown을 출력하게 해라.function showMessage(message, name = 'unknown') {
console.log(`${message} by ${name}`);
}
showMessage('hello');
// hello by unknown
function showAll(...args){
...
}
# 예시 1
let global = 'global'; // 전역변수
function show() {
let local = 'local'; // 지역변수
console.log(local);
console.log(global);
}
// local
// global
# 예시 2
let global = 'global'; // 전역변수
function show() { // 부모 함수
let local = 'local'; // 지역변수
console.log(local);
console.log(global);
function print() { // 자식함수
console.log(local);
let child = 'child'
}
console.log(child); // 에러발생(부모(show)에서 자식(print) 접근 불가)
}
자식의 함수가 부모함수에 접근을 가능하게 하는 것이 '클로저(Closure)'
Return a value
Early return, early exit
조건이 맞지 않는 경우 빨리 return해라.
function upgradeUser(user) {
if(user.point <= 10) {
return
}
// upgrade logic
}
Function Declarations(함수선언식)과 Function Expression(함수표현식)
함수선언식과 함수표현식
callback
function randomQuiz(answer, yes, no) {
if(answer === 'ok') {
yes();
} else {
no();
}
}
randomQuiz('no', yes, no); // no
randomQuiz('yes', yes, no); // yes
// yes()와 no() 함수는 만들어줘야하는데 지금은 함수 안만들었음
Arrow Function(화살표함수)
화살표함수
IIFE
함수선언과 동시에 호출
(function IIFE() {
console.log('IIFE');
})();
// IIFE