Cookie의 MaxAge, Expires 옵션이 무엇인지, 설정하지 않으면 어떻게 되는지 설명해주세요.
Cookie는 HTTP 프로토콜의 비상태성을 보완하기 위한 수단으로,
브라우저에 데이터를 저장할 때 사용합니다.
Cookie의 MaxAge 옵션은 쿠키를 얼마나 유지할 것인지, Expires 옵션은 언제 폐기할 것인지 지정하는 옵션입니다.
두 옵션을 동시에 설정하면 MaxAge가 더 높은 우선 순위로 적용됩니다.
이 두 옵션중 하나라도 설정하지 않으면, 해당 쿠키는 브라우저가 닫힐 때 폐기 됩니다.
MaxAge
Expires
HTTP 타임스탬프로 기록된 쿠키의 최대 생존 시간입니다. 보통의 경우 시간으로 입력하며, 이 옵션이 지정되지 않는다면 세션 쿠키 로 지정되어 취급됩니다. 이는 곧 클라이언트가 종료될 때 파기 되는 것을 의미합니다.
하지만 세션이라는 기능(모든 탭을 기억했다가 브라우저를 다시 켜면 복구되는 기능 등)을 이용하여 기능을 구현하며, 이 기능으로 쿠키 또한 함께 복원됩니다.
시간 설정을 GMT 포맷으로 설정 해야 합니다.
expires : new Date(Date.now() + 86400)
순수함수란 무엇인가요? 불변성과 사이드 이펙트와 연결하여설명해주세요.
순수 함수란 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수를 의미합니다. 또한 순수함수는 네트워크 요청과 같은 side effect가 없고, 입력으로 전달된 값을 수정하지 않는 불변성을 가지고 있습니다.
순수함수의 특징으로는 어떠한 전달 인자가 주어질 경우, 항상 똑같은 값이 리턴됨을 보장합니다.
순수함수는 함수형 프로그래밍에서 자주 사용되는 개념으로, 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수를 의미합니다. 또한 사이드 이펙트가 없어야 합니다. 사이드 이펙트는 쉽게 말해서 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미합니다. 즉, 순수함수는 함수 body내에 있는 코드만 점검하면 되기 때문에 간결하게 코드를 작성하고 사고하는데 도움이 됩니다.
자바스크립트에서 순수함수를 제작하기 위해서 데이터의 불변성을 유지하는 것이 중요합니다. 함수의 전달인자로 참조 자료형이 전달되는 경우, 해당 객체 자체를 바꿔서 사이드 이펙트를 만들 수 있고, 이는 해당 데이터의 불변성을 손상시킬 수 있습니다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce 등이 각광을 받게 되었습니다.