함수를 집중적으로 다루었다
가장 새로운거라면 단연코 arrow function!!
C언어에서는 포인터로 접근하는 걸 ->로 했었는데
JS에서는 =>으로 함수를 표현할 수가 있다? ㄷㄷ
function printHello() {
console.log('What\'s up');
}
printHello();
function log(msg) {
console.log(msg);
}
log('What\'s up');
TypeScript에서는 아래와 같이 쓴다(참고)
//in TypeScript
function log(msg: string): number {
console.log(msg);
return 0;
}
function changeName(obj) {
obj.name = 'coder';
}
const comet = { name: 'comet' };
changeName(comet);
console.log(comet);
function showMsg(msg, from) {
console.log(`${msg} by ${from}`);
}
showMsg('Hi!');
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', 'comet');
let globalMsg = 'global'; // global
function printMsg() {
let msg = 'hello'; // local
console.log(msg);
console.log(globalMsg);
function printAnother() {
console.log(msg);
let childMsg = 'hello';
}
//console.log(childMsg); // error!! local variable outside --> meaningless
}
printMsg();
function sum(a, b) {
return a + b;
}
const result = sum(1, 2);
console.log(result);
// bad
function upgradeUser(user){
if(user.point > 10){
//long upgrade logic...
}
}
// good - 조건 중 return가능한 걸 빨리 실행하도록 하라.
function upgradeUser(user){
if(user.point <= 10){
return;
}
//long upgrade logic...
}
함수가 다른 인수나 값 등으로 취급될 수 있고 자료구조에도 저장될 수 있다는 그런 내용. 컴퓨터과학 세계에서 일류로 취급받는닷!
const print = function () { // anonymous function(함수 명이 읎다)
console.log('print');
};
print();
const printAgain = print;
printAgain();
const sumAgain = sum;
console.log(sumAgain(1, 3));
인수 전달시 함수도 전달될 수 있다! 다른 함수의 인수로 전달되는 함수를 콜백함수라고 합니다!
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);
새거다 새거!
const simpleBrint = function () {
console.log('siimplePrint!');
};
const simplePrint = () => console.log('simplePrnt!');
const add = (a, b) => a + b;
const complecated_add = (a,b) => {
//complicated logic
// arrow function이어도 길어서 중괄호 쓰게되면 return 붙여줘야함
return a+b;
};
같은 기능을 가지는 함수도 정말 간단하게 표현 가능! 파이썬의 lambda같은 느낌?
(function hello() {
console.log('IIFE');
})();