📖 ...
2021년 12월 1일 수요일 기준
let d = new Date();
d
-> Wed Dec 01 2021 10:34:59 GMT+0900 (한국 표준시)
d.getMonth()
-> 11
//월은 0부터 시작
d.getDate()
-> 1
//일은 1부터 시작
d.getDay()
-> 3
//일요일부터 0
d.getHours()
-> 10
d.getMinutes()
-> 34
//실시간 아니고 new Date()했을 때에 시간.
d.getFullYear()
-> 2021
getYear() method대신 이거 사용!
getYear()를 사용하면 원래 년도만 반환한다고 한다. 예를 들어 1999년이면 99만 반환!
근데 이게 2000년이 넘어오면서 앞에 100이 붙어버리는 현상이 있어서 새로만든 메서드가 getFullYear이다.
getFullYear - Mozilla 참고링크:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear
array
let 과일 = ['사과', '수박', '복숭아', '딸기', '바나나'];
let 과일2 = new Array(5);
let 과일3 = new Array('사과', '수박', '복숭아', '딸기', '바나나');
과일[0] = '한라봉'
-> '한라봉'
과일
-> (5) ['한라봉', '수박', '복숭아', '딸기', '바나나']
배열은 이렇게↑ 바꿀 수 있지만,
let text = 'abcde'
text[0]
-> 'a'
text[0] = 'z'
-> 'z'
text
-> 'abcde'
문자는 이렇게↑ 호출해서 바꿀 수 없다.
과일[0][0] = 'ㅋㅋ'
-> 'ㅋㅋ'
과일[0][0]
-> '한'
이렇게도↑ 안된다!
1반의 평균을 구할 때.
let 전교점수 = [
// 1반
[[10, 20, 30, 40, {name:'leehojun', age:10}],
[20, 30, 40, 50, 60]],
// 2반
[[10, 20, 30, 40, 50],
[20, 30, 40, 50, 60]],
];
let result = 0;
let 더해진수 = 0;
for (let r = 0; r < 전교점수[0].length;r++){
for (let i = 0; i < 전교점수[0][r].length; i++){
result += 전교점수[0][r][i];
더해진수++;
}
}
result/더해진수
제일 앞에 삭제
제일 앞에 추가
splice(2,3)
두번째부터 세개 가져오겠다.
얘는 과일을 건드린다.
과일
-> (6) ['사과', '수박', '복숭아', '딸기', '바나나', '한라봉']
과일.slice(2,5)
-> (3) ['복숭아', '딸기', '바나나']
과일
-> (6) ['사과', '수박', '복숭아', '딸기', '바나나', '한라봉']
과일이 변하지는 않는다!
let 과일 = ['복숭아', '딸기', '바나나'];
let 제주과일 = ['귤', '한라봉', '천혜향'];
제주과일.concat(과일)
-> (6) ['귤', '한라봉', '천혜향', '복숭아', '딸기', '바나나']
과일.concat(제주과일);
-> (6) ['복숭아', '딸기', '바나나', '귤', '한라봉', '천혜향']
제주과일
-> (3) ['귤', '한라봉', '천혜향']
과일
-> (3) ['복숭아', '딸기', '바나나']
let data = [10, 20, 30, 11, 22, 25, 111, 8];
data.sort()
-> (8) [10, 11, 111, 20, 22, 25, 30, 8]
data
-> (8) [10, 11, 111, 20, 22, 25, 30, 8]
사전식 정렬..(골치아프다.)
array.sort((a,b) =>a-b);
오름차순
array.sort((a,b => b-a);
내림차순
sort - mozilla 참고링크:
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
역순
1. sort는 사전식 정렬이다.
2. reverse는 역 정렬이 아니라 역순이다.
sort(정렬하고) + reverse (정렬한 걸 거꾸로) => 역정렬
reverse => 역순 (그냥 거꾸로..)
object
let person = {
name: '이호준',
age: 10,
height : 30,
weight : 40,
이력 : {'첫번째직장' : '하나', '두번째직장' : '둘'},
10 : 100
}
person.name
-> '이호준'
person['name']
-> '이호준'
person.'name'
-> 에러
person[name]
-> undefined
person.이력.첫번째직장
-> '하나'
person['이력'].첫번째직장
-> '하나'
person.10
-> 에러
person[10]
-> 100
person['10']
-> 100
Object.keys(person)
-> (6) ['10', 'name', 'age', 'height', 'weight', '이력']
키만 뽑아낸다.
Object.values(person)
-> (6) [100, '이호준', 10, 30, 40, {…}]
밸류만 뽑아낸다.
둘다 뽑아야 할 때 entries를 쓴다.
let data = Object.entries(person)
data[0]
-> (2) ['10', 100]
data[1]
-> (2) ['name', '이호준']
data[2]
-> (2) ['age', 10]
data[3]
-> (2) ['height', 30]
entries는 반복문할 때 좋다.↓
for (let i of Object.entries(person)) {
console.log(i[0], i[1]);
}
혹은
for (let i of data) {
console.log(i[0], i[1]);
}
이렇게 하면 밑에 내용이 출력된다.
-> 10 100
-> name 이호준
-> age 10
-> height 30
-> weight 40
재사용성
아키텍쳐 파악
유지보수
... 그 외에도 많다.
function 함수하나(){
let x = 10;
console.log('함수하나 호출')
}
함수하나()
-> 함수하나 호출
함수 안에서 선언된 변수는 함수밖으로 나오지 않는다.
let k = 10;
function viewk(){
console.log(k);
}
function changek(){
k += 10;
console.log(k)
}
viewk()
changek()
viewk()
-> 10 20 20
if (true) {
let y = 10;
}
console.log(y)
이러면 안나온다.
let yy = 100
if (true) {
let yy = 10;
console.log(yy);
}
console.log(yy);
-> 10 100
const도 마찬가지다.
if (true) {
var yyy = 10;
console.log(yyy);
}
console.log(yyy);
->10 10
scope
스코프(scope)
: 변수에 접근할 수 있는 범위. (전역 스코프와 지역 스코프)
전역 스코프
: 중괄호 {}의 밖, 전역 스코프에서 선언된 것들을 전역 변수라고 한다.
지역 스코프
: 중괄호 {}의 안, 지역 스코프에서 선언된 것들을 지역 변수라고 한다.
블록 스코프
: 블록 {}이 생성될 때마다 새로운 스코프가 형성되는 것을 의미한다.
함수 스코프
: 함수 내부에서 선언한 변수는 지역 변수, 함수 외부에서 선언한 변수는 모두 전역 변수로 취급한다.
function add(a, b) {
return a + b;
}
add(10,20)
여기에서,
파라미터 : a, b
아규먼트 : 10, 20
파라미터 선언 아규먼트 실행
function add(a = 100, b = 200) {
return a + b;
}
add(undefined, 300)
-> 400
이러면 a는 유지되고 b자리에 300이 들어간다.
return은 함수를 종료함과 동시에 뱉어주는 것. 종료할 때 쓴다.
function add(a = 100, b = 200) {
return a + b;
console.log('jojo')
}
add()
-> 300
이렇게 되면 jojo가 안나온다. 그래서 종료하고 싶을 때는 리턴 이후로 아무것도 안 쓴다.
함수가 변수에 할당되는 것은 가능하다.
함수 선언문과 함수 표현식의 차이는 호이스팅 차이
function 함수이름() {}
-> 요렇게 선언해서 사용const 변수 = function () {}
-> 요렇게 변수에 함수를 할당하여 사용둘다 비슷비슷해보이지만 조금은 다르다. - 호이스팅
호이스팅에 대한 자세한 내용은 다음 시간에 다룰 예정
🎈 함수 선언문은 함수 호이스팅이 발생한다. 런타임 이전에 함수 객체가 생성이 되므로 함수를 일단 호출하고, 함수를 정의하는 것이 가능하다.
🎈 함수 표현식은 변수 호이스팅이 발생하며, undefined로 초기화된다. 그러므로 함수 선언문으로 선언한 함수는 함수를 정의한 후에 호출이 가능하다.
호이스팅 - mozilla 참고링크:
https://developer.mozilla.org/ko/docs/Glossary/Hoisting
콜백함수란 이름 그대로 '나중에 호출되는 함수'이다.
'호출방식'에 따른 구분이다.
let add30 = (a, b) => a + b;
add30(100, 100)
-> 200
어제 나름 혼자 연습문제 2번까지 풀었다고 뿌듯해하면서 자신감 뿜뿜했는데, 오늘은 다시 자신감 하락이다.😂
매일매일 자신감 상승과 하락이 반복한다. 그래도 매일 하락이 아닌게 어디냐며 위로한다..! 자바스크립트에 치여서 헤롱헤롱하고 있으면 선생님이 너무 막막하면 복습하지 않고 내일 수업을 들어도 된다고 다독여주는게 너무 안심이 된다. 물론 그렇다고 아예 손을 놓고 놀 수는 없지만. 이번에 빌려온 자바스크립트 책이라도 읽으면서 다시 정리를 해봐야겠다.
잘한점
고칠점