[Week12] 0406

안나경·2024년 4월 6일

크프정 일상

목록 보기
85/109

어제의 이야기

어제 공부한 것

..
낮에는 티타임, 채용 설명회를 요약하고...
(기억이 가물가물했는데 생각이 나긴 하더라)

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까지 보고
화욜 수욜은 게시판... 좀 짜면서 책 보고

그 다음주는 리액트를 봐야겠군..

profile
개발자 희망...

0개의 댓글