어제의 이야기
어제 공부한 것
..
낮에는 티타임, 채용 설명회를 요약하고...
(기억이 가물가물했는데 생각이 나긴 하더라)
express를 찾아봤는데 node js 내부에 있는 파트라
강의를 살까 하다가 무료도 있고 고민했는데
그냥 책을 샀음.
- Node js 교과서
- 인사이드 자바스크립트 : 나쁜 책은 아니겠지만 문법이 많이 바뀌었고 옛날 책이라..ㅠ 환불도 안되고..
- 코딩 자율 학습 제로초의 자바 스크립트 입문
이 사람은 강의가 따로 있는데 강의 듣기 귀찮아서...
좀 읽다가
저녁에 투표하러 가고
죔 늦게 와서
책만 읽다 하루 끝.
(그 시간 동안 진도가 얼마나 나가는지 보려고.)
한 3시부터 4시까지
8시부터 11시까지 했다 치면
4시간 정도...에 100페이지인가?
효율 별로?인데?
오늘 쭉 해보고 확인해봐야겠군...
배운 것...
팁에 가까운 것
문자열.
- 세미콜론 안 붙인다고 큰일은 웬만해서 안나지만 나는 경우가 있으니 항상 붙일 것.
- 타입 확인은 typeof
- 콘솔 행갈이 확인은 alert()로.
- 사실 행갈이 자체는 백틱이 편함.
숫자.
- 2진법은 숫자앞에 0b, 8진법은 숫자 앞에 0o.
- parseInt()와 Number()은 문자->숫자. 전자는 정수만. 실수용은 parseFloat()이 따로 있음.
- NaN은 Not a number이지만 type은 number.
- 거듭제곱 연산자 **.
- +연산시 숫자보다 문자열 우선, -연산시 숫자가 우선.
- 실수 계산시 오차 발생 가능하므로 실수->정수로 바꾸어 계산하면 됨.
불값
- NaN === NaN 은 false.
- true(1) > false(0)
- 자료형까지 같은지 확인할땐 ===, !==.
- !!'a' 등으로 bool로 형변환 가능. 대부분은 true가 되나 '',0, NaN, undefined, null은 false.
- ?? 연산자는 널 병합 연산자로, 둘 중 하나가 null이나 undefined면 다른쪽 값을 출력.
빈 값
- undefined와 null은 자료형이 다름.
- null인지 확인할때는 === null로 해야함.
- undefined는 기본값이라는 의미가, null은 의도적으로 지운 값임.
중첩 if문 사용하기
- 중첩 if문은 if-else if-else문으로 바꾸어 가독성을 살리자.
switch문
- 일치하는 case 발견시, 그 아래 case도 실행되므로 break; 필요.
배열
인덱스
- 마지막 요소는 -1 인덱스로 찾기.
- 맨 뒤에 새로운 요소 추가시에는 arr[arr.length] 에 넣으면 추가.
arr.length-1이 마지막 인덱스라.
- .at(-1)도 마지막 요소는 찾을 수 있는데, 그냥 값을 반환하는 거라 이걸로는 추가는 불가.
..
배열 추가 삭제 수정 찾기.
- 맨앞에 새로운 요소 추가 unshift(), 맨 뒤에 추가 push().
- const는 배열 요소 안은 수정 가능하나 대입이 불가능한 것.
- pop()으로 마지막 요소 삭제, shift()로 첫 요소 삭제, 중간 요소 삭제는 splice()
- splice(1,1)은 앞은 시작 인덱스, 뒤는 삭제 요소 개수.
하나만 넣으면 해당 인덱스부터 끝까지 전부 삭제로 인식.
아예 대체하고 싶다면(1,1,'가')등으로 지정 가능.
삭제 요소 갯수를 0으로 하고 중간에 추가도 가능.
- includes()로 주어진 값 배열 존재 확인 가능.
인덱스 위치는 indexOf(), lastIndexOf()로 수색 가능.
전자는 앞에서부터, 후자는 뒤에서부터 찾음.
단, 이 방식은 자료형도 일치해야 찾아줌.
- 기존 배열을 잘라 새 배열을 만들때는 .slice(시작 인덱스, 종료 인덱스)
단, 시작 인덱스는 새 배열에 포함되어도 종료 인덱스는 포함되지 않음.
종료 인덱스가 없으면 마지막 요소까지 포함,
시작 인덱스가 없으면 처음부터 포함.
인덱스 지정하지 않으면 전부 포함.
배열 합치기, 배열->문자열->배열, 배열 초기화.
- 두 배열을 합쳐 하나로 만들때는 concat()
- 배열->문자열은 join().
아무것도 없으면 쉼표로 합치고, 다른걸 넣으면 그걸로 문자열 만듦.
- 문자열 -> 배열은 split()
- flat()으로 배열 차원 한단계 낮추기 가능.
- 배열은 [] 말고 Array(길이)로도 가능.
단, 전부 빈 값으로 지정되므로 fill()로 빈 배열 요소를 특정값으로 채우기가능.
Set.
- new Set([배열])로 Set 만듦.
Set은 요소 개수 구할때 size를 씀.
중복만 제거하고 싶을때 Set-> 배열로 쓰는데, 이걸
Array.from()을 씀. Araay.from(new Set([배열]))
Array.from()은 문자열->배열도 함.
함수
- function이나 =>로 함수 생성.
function 이름() { 실행문 }
이름 = function() { 실행문 }
() => { 실행문 } 또는 () => 반환식
첫번째는 함수 선언문, 후자는 함수 표현식.
- 매개 변수 대응되는 인수가 없을때는 자동으로 undefined가 됨.
- 인수의 갯수는 argument로 알아낼 수 있는데, undefined는 안 셈.
이 값은 funcion으로 선언한 함수만 가능.(화살표 함수는 불가능.)
- 자신의 매개변수가 아니어도 접근은 가능함.
(밖에서 a선언한걸 가져다 쓰는게 가능.) 스코프에 따라 달라짐.
- 함수가 함수를 반환할 수도 있음.
객체 리터럴
속성
- 중괄호를 사용해 객체를 표현하는 것이 객체 리터럴.
- 변수.속성, 변수['속성']으로 접근 가능.
후자는 문자열 형태로 넣어줘야함.
만약 속성내에 마침표가 있다면 후자로만 접근 가능.
- 속성으로 변수를 가질수도 있음.
- 속성 이름과 속성 값으로 사용된 변수 이름이 같다면
const zerocho = { name, year } 같은 식으로만 넣어도
zerocho.name으로 접근 가능.
- 속성 삭제는 delete 변수.속성; 으로 가능.
- 객체 속성으로 함수가 들어가면, 이를 메서드, Method라고 함.
const debug = {
log(value) { 실행문...}, }; 식으로 축약 가능.
- 객체 안에 객체를 넣을 수도 있음.
단, 이런 중첩 객체 속성 접근 시 가는 도중 null이 떠 에러 발생 가능.
실제 속성이 있는지 불분명할때는 ?. 연산자를 써서
없으면 undefined를 반환해줌.
객체 비교, 참조, 복사.
- 객체끼리 비교 연산시, 생성할 때마다 다른 것이라 false가 뜸.
기존 객체를 변수에 저장해야 같은 객체인지 비교할 수 있음.
- 객체가 아닌, (문자열, 숫자, 불, Null, undefined)는
다른 변수에만 넣어도 서로 참조하지 않음.(copy됨.)
그러나 객체는 참조가 생김.
겉부분은 달라도 속 요소들은 같은걸 참조할수 있음.(얕은 복사.)
속 요소도 다를 때야 깊은 복사라고함.
얕은 복사는 ...연산자(스프레드 문법)을 사용,
기존 객체 속성을 새 객체에 대입할 때 사용. concat(), slice()도 가능.
- 깊은 복사는 JSON.parse(JSON.stringify(array))같은 식으로
전자는 문자열을 객체로, 후자는 객체를 문자열로 만듦.
소감
...
이제보니 꽤.. 나름.. 많은 ... 분량을 봤군.
알고리즘 풀어야하는뎅...
오늘의 계획
오전
오전 TIL 쓰다 지금 마감함
낮
알고리즘...
그리고 Javascript 책 보기.
저녁
책을 다 볼 수 있게 힘내기
오늘의 다짐
일욜에도 책 봐야지 음
월욜 까지 node js까지 보고
화욜 수욜은 게시판... 좀 짜면서 책 보고
그 다음주는 리액트를 봐야겠군..