제출할 디렉토리 이름 | week3/ex00 |
---|---|
제출할 파일 이름 | time.js |
5월 17일, 영민이는 학교에 떨어져 있는 의문의 구슬을 만지자 갑자기 타임워프를 할 수 있는 능력이 생겼습니다. 이를 실험하고자 time.js
를 만들었지만, 아쉽게도 time.js
를 작성하는 도중 타임워프를 해 코드가 다 완성하지 못했습니다. 여러분들은 미완성인 time.js
를 완성하는 걸 도와줘야 합니다!
현재 영민이의 time.js
에는 다음과 같이 적혀있습니다.
const month = /* TODO */;
let day = /* TODO */;
const timeWarp = (newMonth, newDay) => {
// TODO
}
위 코드를 완성할 때 다음과 같은 조건을 만족해야 합니다.
month
와 day
에는 시간 정보가 저장되어야 합니다. 맨 처음 선언에는 현재 날짜인 5월 17일을 저장하면 됩니다.month
와 day
에 있는 정보가 변경되어야 합니다.timeWarp(5, 10);
timeWarp(11, 20);
💡hint!
const - JavaScript | MDN
아래는 처음에 작성한 코드인데,
const는 재할당이 안되기 때문에 오류가 발생했다.
const month = 5;
let day = 17;
const timeWarp = (newMonth, newDay) => {
month = newMonth;
day = newDay;
};
timeWarp(12, 25);
console.log(`${month}월 ${day}일로 시간이 이동되었습니다.`);
이를 어떻게 해결해야할까?
간단히 const
를 let
으로 변경해주면 되지만, 작성한 코드는 수정할 수 없다는 문제의 조건 때문에 변경할 수 없다.
음,..어떻게 풀지 재할당을 하지 않고 푸는 방법은 없을 것 같은데..... 답이 있긴 한걸까🥲😭
확실한 건 month = newMonth;
가 불가능 하다는 것이다.
month
는 변경할 수 없으니 새로운 변수 addMonth
를 생성하여 문제를 해결하였다!
생각보다 간단한 문제였다. 😎
const month = 5;
let day = 17;
const timeWarp = (newMonth, newDay) => {
const addMonth = newMonth;
day = newDay;
console.log(`${addMonth}월 ${day}일로 시간이 이동되었습니다.`);
};
timeWarp(12, 25);
제출할 디렉토리 이름 | week3/ex01 |
---|---|
제출할 파일 이름 | dynamicType.js |
It’s time to change! 매개 변수를 받고, 그 값을 저장하고, 이를 외부의 함수를 통해 동적으로 타입을 변환하면서 출력하는 객체 dynamicType을 만들어봅시다.
// in dynamicType.js
const dynamicType = {
value: undefined,
type: undefined,
put : //이곳에 함수 작성,
change : //이곳에 함수 작성,
printType : //이곳에 함수 작성,
}
type.put(42); // type === Number
type.change("Array"); // 입력 값이 Array로 변경되어야 함
type.printType(); // 변경된 값이 출력되어야함 문자열의 경우 따옴표까지
type.put(42);
type.change("String");
type.printType(); // 42, String
hint: Array.isArray(value);
아래는 처음에 작성한 코드이다.
const dynamicType = {
value: undefined,
type: undefined,
put: function (newValue) {
if (typeof this.value === "undefined") {
this.value = newValue;
} else {
console.log(
"put 함수는 printType을 실행하기 전까지 처음 한 번만 사용하여야 합니다."
);
}
},
change: function (newType) {
if (typeof this.value !== "undefined") {
switch (newType) {
case "String":
this.value = String;
break;
case "Number":
this.value = Number;
break;
case "Object":
this.value = Object;
break;
case "Array":
this.value = Array;
break;
}
this.type = newType;
} else {
console.log(
"change 함수는 put 함수를 사용하기 전에 작동되어서는 안됩니다."
);
}
},
printType: function () {
console.log(`${this.value}${this.type}`);
},
};
dynamicType.put(5);
dynamicType.change("Array");
dynamicType.printType();
change: function (newType){}
이 부분에서 오류가 발생하는 것 같다.
어떻게 수정해야할까? this.value = String;
이렇게 하는 것이 가능한가?
어떻게............수정........해야........할까