나이 비교

배병일 ㅣ 2023. 5. 31. 19:25

문제 조건
가장 아래의 코드가 실행 되었을 때, “Passed ~” 가 출력되도록 getAge 함수를 채워주세요
var user = {
    name: "john",
    age: 20,
}

var getAged = function (user, passedTime) {
		// 여기를 작성해 주세요!
}


var agedUser = getAged(user, 6);

var agedUserMustBeDifferentFromUser = function (user1, user2) {
    if (!user2) {
		    console.log("Failed! user2 doesn't exist!");
	  } else if (user1 !== user2) { 
        console.log("Passed! If you become older, you will be different from you in the past!")
    } else {
        console.log("Failed! User same with past one");
    }
}

agedUserMustBeDifferentFromUser(user, agedUser);
답안 코드
var user = {
    name: "john",
    age: 20,
}

var getAged = function (user, passedTime) {
    // 여기를 작성해 주세요!
    var newuser = {}
    for (var prop in user) {
        newuser[prop] = user[prop]
    }

    newuser.age += passedTime

    return newuser
}


var agedUser = getAged(user, 6);

var agedUserMustBeDifferentFromUser = function (user1, user2) {

    console.log(user1)
    console.log(user2)

    if (!user2) {
        console.log("Failed! user2 doesn't exist!");
    } else if (user1 !== user2) {
        console.log("Passed! If you become older, you will be different from you in the past!")
    } else {
        console.log("Failed! User same with past one");
    }
}

agedUserMustBeDifferentFromUser(user, agedUser);

 

var newuser = user 를 할 경우 user 자체도 변경 되기 때문에 

 

var newuser = {} 를 통해 user의 키값들만 가져오게 한 것이다.

 

이러쿵 저러쿵해서 어떻게 돌아가는 지는 이해했다.

 

여기서 궁금한건 해당 문제에서 user 전체의 키 값을 받아오는 것이 아닌

 

newuser 를 불러올때, 즉 user2 를 불러올때 user1에서 age 값에 passdTime의 값을 더해

 

user1의 age값으로 나타내는 방식은 더 복잡해지는건가 라는 것이다...

수정 코드
var user = {
    name: "john",
    age: 20,
}

var passedTime = 6

agedUser = {
    name: user.name,
    age: user.age + passedTime
    
}

var agedUserMustBeDifferentFromUser = function (user1, user2) {

    console.log(user1)
    console.log(user2)

    if (!user2) {
        console.log("Failed! user2 doesn't exist!");
    } else if (user1 !== user2) {
        console.log("Passed! If you become older, you will be different from you in the past!")
    } else {
        console.log("Failed! User same with past one");
    }
}

agedUserMustBeDifferentFromUser(user, agedUser);

여기서

agedUser = {
    name: user.name,
    age: user.age + passedTime
}

 

부분의 agedUser 를 user2로 바꾸고

 

마지막줄인 

agedUserMustBeDifferentFromUser(user, agedUser);

 

이 부분을 아예 지워도 상관없다.

 

paseedTime = 6 부분만 숫자를 바꾸어 user2의 나이가 변하는지 확인,

 

user1 과 user2가 서로 다른 객체인지 확인.

 

문제 없이 작동하는 걸 확인했다.