function printLog (massage) {
console.log(massage);
}
printLog('Hello');
=> Hello 출력
function changeName (obj) {
obj.name = 'corder';
}
const dongju = {name: 'donjoo'};
changeName(dongju);
console.log(dongju);
function showMassage (message, from = 'unknown') {
console.log(${message} by ${from});
}
showMassage('Hi!');
function printAll (...args) { // ... => 배열 형태로 전달
for (let i = 0; i < args.length; i++) {
console.log(agrs[i]);
}
for (const arg of args) { // 더 쉽게
console.log(arg);
}
args.forEach((arg) => console.log(arg)); // 더더 쉽게
}
printAll('dream', 'coding', 'dongdu');
let globalMessage = 'global'; // global variable
function printMessage () {
let message = 'hello';
console.log(message); // local variable
console.log(globalMessage;)
}
printMessage();
return을 지정하지 않은 함수는 return undefined가 생략되어 있음
function sum(a, b) {
return a + b;
}
const result = sum(1, 2);
console.log(sum: ${sum(1, 2)});
bad
function upgradeUser1 (user) {
if(user.point > 10) {
// long upgrade logic,,,
}
}good
function upgradeUser2 (user) {
if(user.point <= 10) {
return;
}
// long upgrade logic,,,
}
=> 길이가 짧은 로직은 앞부분에 작성, 길이가 긴 로직은 끝에 작성
다른 변수와 마찬가지로 변수에 할당이 되고 parameter로 전달이 되며 return 값을 받을 수 있음
function declaration: hoisting 가능(함수가 선언되기 전에도 호출이 가능)
function expression: hoisting 불가능
const print = function () {
console.log('print');
};
print();
const 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);
randomQuiz('love you', printYes, printNo);
항상 anonymous
const simplePrint = () => console.log('simple!');
const add = (a, b) => a + b;
const simplePrint2 = () => {
// do something more
return a * b;
}
바로 호출 가능
(function hello() {
console.log('hello');
})();