본문 바로가기

기록(노트)

자바스크립트:클로저(Closure)/내장객체(시간,날짜)

<script type="text/javascript">
		function closuerFn(){
			let name = '홍길동';
			return function(){
				console.log(name);
			}
		}
		const resultFn = closuerFn();
		resultFn();
	
		function cntFn(){
			let cnt = 0;
			return function(){
				cnt += 1;
				console.log(cnt);
			}
		}
		const increaseCnt = cntFn();
		increaseCnt();
		increaseCnt();
		increaseCnt();


	</script>

 

이 코드에서 중요한 점은 closuerFn() 함수와 cntFn() 함수가 모두 내부 함수를 리턴하고 있다는 것입니다. 이 내부 함수들은 closuerFn()cntFn()이 호출된 이후에도 namecnt 변수에 접근할 수 있습니다. 이렇게 함수가 자신이 선언됐을 때의 스코프를 기억하고, 이 스코프에 접근할 수 있는 함수를 클로저라고 합니다.

 

 

 

 

 

 

오늘 날짜에서 25일 지난 거 출력해보시오 꼭 다시해봐!! 까먹기 쉬울거같음

// 실습1. 오늘 날짜를 '2023년 00월 00일 (요일)' 이라고 출력하시오.
		const formatNum = num =>((num<10) ? `0${num}` : num);
        const formatDate = paraDate => {
            const dayArr = ['일', '월', '화', '수', '목', '금', '토'];
            let year = paraDate.getFullYear();
            let month = formatNum(paraDate.getMonth()+1);
            let date= formatNum(paraDate.getDate());
            let day = dayArr[paraDate.getDay()];
            let result = `${year}년 ${month}월 ${date}일 (${day}요일)`;
            return result;
        }
        const today = new Date();
        let print = formatDate(today);
        console.log(print);

        //실습2. 오늘 날짜에서 25일이 지난 날짜를 위에 포맷 방식으로 출력하시오.
        today.setDate(today.getDate()+25);
        print = formatDate(today);
        console.log(print);