자, 이제 모든 언어의 꽃이라고 할 수 있는 함수까지 왔습니다. 이때까지 저희는 변수, 조건문, 반복문과 함께 모든 프로그래밍 로직을 설계하고 작성할 수 있게 되었습니다. 이론적으로는 말이죠.
물론, 아예 불가능하다는 말은 결코 아닙니다. 실제로 이 지식만을 가지고 여러분들은 지금 당장 모든 서비스들을 만들 수 있습니다! 다만 시간이 엄청 오래 걸리겠죠.
왜 그럴까요? 아래의 코드를 보면서 설명해봅시다.
.
.
.
.
let status = true;
let msg = "";
try {
req.body.writer_id = await verifyToken(req.cookies.sessionId);
req.body.timestamp = mysql.raw("now()");
console.log(req.body);
const query = `INSERT INTO questions SET ?`;
const result = await testdb.changeQuery(query, req.body);
status = true;
msg = result.insertId;
} catch (e) {
msg = e.message;
}
res.status(200).json({
status: status,
msg: msg,
});
if (!req.cookies.sessionId) {
msg = "sessionId is not exist";
} else {
res.clearCookie("sessionId");
status = true;
msg = "logout success";
}
res.status(200).json({
status: status,
msg: msg,
});
try {
req.body.writer_id = await verifyToken(req.cookies.sessionId);
req.body.timestamp = mysql.raw("now()");
console.log(req.body);
const query = `INSERT INTO questions SET ?`;
const result = await testdb.changeQuery(query, req.body);
status = true;
msg = result.insertId;
} catch (e) {
msg = e.message;
}
if (!req.cookies.sessionId) {
msg = "sessionId is not exist";
} else {
res.clearCookie("sessionId");
status = true;
msg = "logout success";
}
res.status(200).json({
status: status,
msg: msg,
});
console.log(res);
보기만 해도 숨이 턱 막히는 63줄의 javascript 코드입니다.. 뭐가 어떻게 흘러가는지 눈에 보이지도 않네요...
혹시, 위 코드에서 무언가 규칙이 보이시지 않으신가요? 어떤 특정한 코드들이 반복해서 실행되고 있는 모습이 보입니다!
분명 저번 시간에 배웠죠. "프로그래밍 언어는 반복을 싫어한다"...
어쩌면 이것들도 간단히 줄일 수 있을 것만 같은데, 이때까지 배운 조건문, 반복문으로는 도저히 방법이 떠오르질 않는군요...
여기서! 함수를 사용하게 된다면 어떻게 될까요?