JavaScript part.2
함수 ,데이터 타입 중심으로 정리할 예정
여러 인자(multiple arguments)를 받는 함수, 즉 한개를 받을수도 세개를 받을 수도 있는 구조
에 대해서 이해해 보자!
아래 예시를 통해 설명하면 더 이해가 될것
만들고자 하는 함수는, meetAt(year,month,date)
세 parameter를 기본적으로 받는 함수이지만 year
이나 year,month
의 인자(argument)만 받으면 다르게 출력하는 함수를 만들고자 한다.
예를 들어 year인자만 받을때, year.month인자를 받을 때, year,month,date인자를 받을때 다른 형식으로 return 하는 함수를 만들 것이다! 즉 아래와 같이 출력 되어야 한다는 뜻
meetAt(2022);
// 결과 --> "2022년"
meetAt(2032, 3);
// 결과 --> "2032년 3월"
meetAt(1987, 10, 28);
// 결과 --> "1987/10/28"
👉date 인자가 있다는것은 year,month,date
가 다 기입되었다는 의미이니 먼저 date가 있을때를 조건으로 조건문을 만들자
👉그러고 나서 걸러진 나머지 중 month가 있다는 것은 year,month
가 있다는 뜻이니 그걸로 조건문을 또만들자
👉나머지는 year만 출력되었다는 얘기이니 그렇게 조건문을 만들고 출력 하면 끝!
function meetAt(year,month,date) {
if(date){
return `${year}/${month}/${date}`
}
else if (month) {
return `${year}년 ${month}월`;
}
else {
return `${year}년`;
}
}
~ 하는동안에 이 함수를 계속 실행하다가 해당 지점에서는 멈춰줘!
라는 기능이고 array에서 원하는 순서대로 배열을 한다거나, 모든 배열에 다른 값을 주고싶다거나 할때 쓰일수 있음 array.length
까지 i++를 실행시켜라 하고 반복문 값을 줄수도 있다! for (let i = 0; i<array.length; i++) {
console.log(i)
}
아침 지옥철🚋에서 사람들을 밀고(push) 타면 겨우 타서 내뒤로 문이 닫힌다. 즉 제일 뒤에 배치된다는 것! 이렇게 생각하면 push함수가 앞에 추가되나? 뒤에추가되나? 헷갈리지 않을 수 있다! 👈🏼
`pop` 단어 어원처럼 튀어나오게 되는건데.. 지옥철을 타려다가 못타게 되면 뒤에서 내리는것!
push와 반대로 이해하면 헷갈리지 않을 수 있다. 밀다
라는 의미가 있는데 unshift는 뭔가 밀어내는건 아니다
라고 이해, 그러니 막 밀어낸다기 보다도 이미 양해 구하고 앞에 섰다 라는 생각으로 unshift
는 맨앞에 간다고 생각하니 헷갈리지 않는다. 노약자를 양보해서 줄의 맨 앞에 세워주는 느낌? 양해를 구했으니 shift당한건 아니고.. 나름.. 나름 unshift야 (나만 이렇게 이해함 주의🧏)
5개의 숫자 요소(element)로 구성된 result라는 이름의 array를 만들고, 10과 같거나 작은 값의 element는 앞으로 10보다 큰 값들은 제일 뒤로 구성하도록 배열
을 구성해서 리턴해주는 함수를 만들어 보자!
step by step🎶🎵
1. 먼저 함수와 배열구조를 짠다
function divideArrayInHalf (array) {
let result =[];
return result;
}
divideArrayInHalf([1,30,35,15,10]); //우선 랜덤으로 5개 값 부여!
10과 같거나 작은 값의 element는 앞으로 10보다 큰 값들은 제일 뒤로 구성하도록 배열
하려면 배열의 각각요소를 보고 체크하면서 배열해줘야 하는데 그럴때 사용하는것은 for문! 을 사용해서 인자로 받은 array를 재배치 해서 result array 안에 넣어 주자! function divideArrayInHalf (array) {
let result =[];
for (let i =5; i>=0; i--) { //마지막 배열부터 순차적으로 앞을 검사한다. 큰 부분을 뒤로 놓아야 하기 때문에 앞에서 부터 하면 순서가 틀어진다!
if(array[i]>10) { //10보다 크면 값을 뒤에서 넣고
result.push(array[i]);
}
else if(array[i]<=10) {//10과 같거나 작으면 앞으로 넣고
result.unshift(array[i]);
return result;// 그럼 완성! 쨘!
}
divideArrayInHalf([1,30,35,15,10]);
변수를 선언만 하고 할당하지 않았을 경우!
아래 코드처럼 love
를 지정하고는 love 값을 지정해주지 않을 경우
love는 undefined
가 된다
let love;
console.log(love===undefined);
typeof(null) //object가 출력 된다!
null
값은 빈 객체 { }
라는 뜻true or false
로 변환되는 값이며 각각에 아래에 해당할때 true와 false
로 출력된다
**true로 변환되는 값**
문자열: 비어 있지 않은 문자열 보두
숫자: 0이 아닌 모든 숫자
객체: 모든 객체
**false로 변환되는 값**
문자열: "" (빈문자열)
숫자: 0, NaN
객체: null
undefined
"" 이나 ''
안에 감싼 모든 표현slice, length, indexOf
가 다 들어갔으니 각각의 용법 확인 할 것! let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍");
if (firstChar !== -1) {
info = info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length);
}
console.log(info);
-현재의 날짜를 불러오는 함수이고 이러한 형태Fri May 29 2020 00:10:40 GMT+0900 (대한민국 표준시)
로 출력된다, 이런 값을 가지고 웹사이트에서 회원가입시간,글작성시간 등을 활용한다고 보면된다!
let rightNow = new Date();
let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1;
let date = rightNow.getDate();
let day = rightNow.getDay();
let currentHour = rightNow.getHours();
let currentMin = rightNow.getMinutes();
-new Date().getTime()
을 출력하면 날짜의 밀리초 표현 이 나오는데 기준은 1970년1월1일 부터 얼만큼의 밀리초가 지났는지로 계산
function getWesternAge(birthday) {
let diffInMs = Date.now() - birthday.getTime();
let ageDiff = new Date(diffInMs);
return Math.abs(ageDiff.getFullYear()-1970);
}
getWesternAge(1990-03-21T00:45:06.562Z);