드림코딩 엘리 JS수업
엘리 수업을 정리해준 Notion 사이트
// Function
// -fundamental building block in the program
// - subprogram can be used mulitple times
// - performs a task or calculates a value
// function name(param1, param2) { body... return; }
// one function === one thing
// nameing: doSomething, command, verb
// e.g. createCardAndPoint -> createCard, CreatePoint
// function is obeject in JS
function printHello() {
console.log("hello");
}
printHello();
function log(message) {
console.log(message);
}
log('hello');
// JS는 타입이 지정되어 있지 않기 때문에 오류가 날 수 있다.
// premitive parameters: passed by value
// object parameters: passed by reference
function changeName(obj) {
obj.name = 'coder';
}
const ellie = { name: 'ellie' };
changeName(ellie);
console.log(ellie) // 'coder'
obj.name
이기 때문에 변경 가능하다.function showMessage(message, from = 'unknown'){
// if(from === undefined){
// from = 'unknown';
// }
console.log(`${message}, by ${from}`);
}
showMessage('Hi!');
(message, from = 'unknown')
와 같이 파라미터의 default값을 지정할 수 있다.//
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', 'ellie');
...
형태로 파라미터를 받으면 길이에 flexable한 배열을 파라미터로 받을 수 있다.let globalMessage = 'global'; // global variable
function printMessage() {
let message = 'hello';
console.log(message); // local variable
console.log(globalMessage);
}
printMessage();
// First-class function
// function are treated like any other variable
// can be assigned as a value to variable
// can be passed as an argument to other functions.
// can be returned by another function
// a function declaration can be called earlier than it is defined. (hoisted)
// a function expression is created when the execution reaches it.
const print = function () { // anonymous function
console.log('print');
} // 선언과 동시에 할당
print();
const printAgain = print;
printAgain();
const sumAgain = sum;
console.log(sumAgain(2, 3));
var
가 마찬가지로 hoisting된다.function randomQuiz(answer, printYes, printNo){
if(answer === 'love you') {
printYes();
}else {
printNo();
}
} // 함수를 파라미터로 전달하여 필요할 떄 함수를 호출해 -> callback함수라고 한다.
// anonymous function
const printYes = function() {
console.log('yes');
}
// named function
// better debugging in debugger's stack traces
// recursions
const printNo = function print() {
console.log("no");
}
randomQuiz('wrong', printYes, printNo);
randomQuiz('love you', printYes, printNo);
// always anonymous
const simplePrint = function() {
console.log('simplePrint');
}
const simplePrint2 = () => console.log('simplePrint');
const add = (a, b) => a+b;
(function hello() {
console.log('IIFE');
})();