내 코드에서이 상황을 발견했으며 (불행히도) 내 JS 파일에서이 상황을 복제 할 수있었습니다. 그래서 나는이 코드를 가지고 : JavaScript 포인터 및 날짜
var date1 = new Date(); // today
var date2 = date1;
date2 = date2.setDate(date2.getDate() + 1);
// what is date1?
이 코드가 실행 된 후
, 날짜 1 오늘 날짜 + 1입니다! 이것은 포인터에 대해 배웠을 때 학창 시절로 돌아 왔고, 나는 녹슨 것 같아요. 그게 여기서 일어나는거야? 분명히 date1에서 과제를 옮기고 date2 만 수정하고 있지만 date1은 변경 중입니다. 왜 이런 경우입니까?덧붙여 말하면,이 코드가 실행 된 후 date2는 1272123603911과 같은 긴 숫자입니다.이 날짜는 초로 간주되지만 date2는 여전히 Date 객체가 아니어야합니다. setDate()는 Date 객체를 반환해야합니다.
좋은 답변이지만, 나에게 이것이 무슨 일이 일어나고 있는지의 단순함을 완전히 모호하게했기 때문에이 "과제물 할당"용어가 마음에 들지 않았습니다. Javascript (및 Java)에서 변수는 값을 보유합니다. 그게 전부 야. 오브젝트의 경우, 변수에 의해 유지 된 * value *는 오브젝트에 대한 포인터 (포인터)에 대한 참조이지만, 여전히 값이므로 아무것도 일어나지 않습니다. 'o1 = o2'를하면, 특별한 경우는 없지만'o2'의 값은'o1'에 들어갑니다. 문제의 값이 객체에 대한 참조라는 것입니다. –
그렇다면 date1의 가치를 보존하고 싶다면 무엇을해야할까요? date2를 새 객체로 만든 다음 date1을 할당합니다. 여기에서 어떻게 진행해야할지 모르겠다. –