스파르타 코딩클럽 Node.js 기초반 수업을 듣고 있다.
지난 두 달간 개발일지 작성이 뜸했는데 일도 바빴고 정보처리기사 필기 시험을 봤다. 다들 되게 쉬운 시험이라고 했는데 나는 비전공자라 처음 보는 용어나 개념이 많아서 어려웠다. 한달 반 정도 공부해서 2주 전에 필기를 쳐서 붙었고 이제 11월에 실기 시험을 보면 된다. 앞으로 두 달 정도 남은 김에 Node.js 신청해서 듣게 되었다.
오늘까지 2주차 수업을 진행했는데, 1주차에는 javascript와 ES6 기본 문법들을 배웠고, 오늘은 라우터와 미들웨어, 템플릿 엔진에 대해서 배웠다.
각각이 어떤 개념인지 위주로 배웠고, 이번주 강의는 분량이 많지 않아서 금방 들었다.
그럼 지금까지 배운 내용을 간단히 정리해 보고 다음 주차 수업으로 넘어가도록 하겠다.
var age = 20;
console.log(age); // 20
var name = "John Doe";
console.log(name); // John Doe
var personArray = ["John Doe", 20];
console.log(personArray[0]); // John Doe
console.log(personArray[1]); // 20
var personDict = {"name":"John Doe", "age":20}
console.log(personDict["name"]; // John Doe
console.log(personDict["age"];// 20
var personDict = {"name": "John Doe", "age": 20}
if(personDict["age"]>19 {
console.log("Here is your beer!");
} else {
console.log("Get Out!");
}
var personArray = [
{"name": "John Doe", "age": 20},
{"name": "Jane Doe", "age": 19},
];
for (var i = 0; i<personArray.length; i++) {
if (personArray[i]["age"] > 19 ) {
console.log("Here is your beer!", personArray[i]["name"]);
} else {
console.log("Get out!", personArray[i]["name"]);
}
}
// Here is your beer! John Doe
// Get out! Jan Doe
function isValidAge(person) {
if (person["age"] > 19) {
return true;
else {
return false;
}
}
var personArray = {
{"name": "John Doe", "age": 20},
{"name": "Jane Doe", "age": 19},
];
for (var i=0; i<personArray.length; i++) {
if(isValidAge(personArray[i])) {
console.log("Here is your beer!", personArray[i]["name"]);
} else {
console.log("Get out!", personArray[i]["name"]);
}
}
// Here is your beer! John Doe
// Get out! Jane Doe
function getAgeAverage(personArray) {
var average = 0;
var sum = 0;
for (var i = 0; i < personArray.length; i++) {
sum = sum + personArray[i]["age"];
}
average = sum / personArray.length;
return average
}
var personArray = [
{"name": "John Doe", "age": 20},
{"name": "Jane Doe", "age": 19},
{"name": "Fred Doe", "age": 32},
{"name": "Chris Doe", "age": 45},
{"name": "Layla Doe", "age": 37},
];
console.log(getAgeAverage(personArray)); // 30.6
var num = 10;
if (num == 10) {
var num = 20;
console.log("num in if : ", num); // num in if : 20
}
console.log(num); // 20
===
let num = 10;
if (num == 10) {
let num = 20;
console.log("num in if : ", num); // num in if : 20
}
console.log(num); // 10
const PI = 3.1415;
PI = 3.141592; // Uncaught TypeError: Assignment to constant variable.
const students = ["John", "Jane", "Alex"]
for (let i = 0; i < students.length; i++) {
console.log(students[i]);
}
// John
// Jane
// Alex
for of를 사용하면 배열의 원소 하나씩 가져올 수 있다. for loop와 다르게 별도의 변수를 선언해서 배열의 길이를 알 필요 없이 배열의 원소의 개수만큼 알아서 반복된다.
const students = ["John", "Jane", "Alex"]
for (const student of students) {
console.log(student);
}
//
John
Jane
Alex
const students = ["John", "Jane", "Alex"]
for (const index in students) {
console.log (index, students[index]);
}
//
0 John
1 Jane
2 Alex
const students = ["John", "Jane", "Alex"]
students.forEach(v => {
console.log(v);
});
//
John
Jane
Alex
let personArray = [
{"name": "John Doe", "age": 20},
{"name": "Jane Doe", "age": 19},
{"name": "Fred Doe", "age": 32},
{"name": "Chris Doe", "age": 45},
{"name": "Layla Doe", "age": 37},
];
// personArray의 나이 평균을 구해주는 Arrow Function을 작성해봅시다.
const getAgeAverage = (personArray) => {
let sum = 0;
for (let person of personArray) {
sum = sum + person["age"];
}
const average = sum / personArray.length;
return average;
}
console.log(getAgeAverage(personArray));
const isReady = true;
// 1. Producer
const promise = new Promise((resolve, reject) => {
console.log("Promise is created!");
if (isReady) {
resolve("It's ready");
} else {
reject("Not ready");
}
});
// 2. Consumer
promise
.then(message => {
console.log(message);
})
.catch(error => {
console.error(error);
})
.finally(() => {
console.log("Done");
});
// Promise is created!
// It's ready
// Done
Promise의 상태는 총 세가지가 있다.
ⓐ pending (대기) : Promise가 처음 생성될 때
ⓑ Fulfilled (이행) : Promise에서 resolve를 실해앟여 Fulfilled (이행) 상태가 됨
ⓒ Rejected (실패) : Promise에서 reject를 실행하면 Rejected(실패) 상태가 됨
Producer and Consumer
ⓐ Producer : Promise를 처음 생성할 때 Promise의 내부 코드블럭이 실행된다. 이를 executor라 하는데, executor 실행 결과에 따라 resolve또는 reject를 불러준다.
ⓑ Consumer : Promise의 결과에 따라 후처리를 한다. Promise가 정상적으로 실행되서 resolve가 되었으면 then을 통해 후처리를 하고, reject가 될 경우 catch를 통해 후처리를 한다.