혼자 공부하는 자바스크립트 책 반납기간이 하루남아서 하루동안 내가 알고 있는 지식 외에 모든 자료를 정리해 보려고한다.
키워드
자바스크립트 초기에 만들어 놓은 키워드 ex) case, break, true, typeof, etc...
식별자
코드를 작성할 때 변수명이나 함수명에 사용되는 단어 (함수명에 사용된다는 것은 해당 함수를 적으면 해당함수에 해당 하는 코드를 가져온다는 의미이기도함)
규칙
(1) 키워드 사용 x
(2) 숫자로 시작 x
(3) 특수 문자는 _, & 만 허용
(4) 공백 포함 x
구분 | 단독 사용 | 다른 식별자와 사용 |
식별자 뒤 괄호 X | 변수 | 속성 |
식별자 뒤 괄호 O | 함수 | 메소드 |
const 상수 저장 키워드
let 변수 저장 키워드
증감 연산자
변수 ++ 함수 실행 후 1을 더한다
++ 변수 함수 실행 전 1을 더한다
문자열 입력 함수
prompt(입력창 내용, 입력 기본값)
boolean 입력 함수
confirm('수락하시겠습니까?') ← 확인 취소 창이 뜸
문자열 < > 숫자 자료형 변환방법
number()
String()
불 자료형의 경우 변환시 boolean 혹은 !! 붙이면 변환
0, NaN, ... , 빈 문자열, null, undefiend 이 5가진느 false 로 변환 나머지는 다 True
조건문
if else 문
switch 문
조건부 연산자
불 표현식 ? 참일때 결과 : 거짓일때 결과
const result = (number >=0) ? '0 이상 숫자' : '0 이하 숫자'
짧은 조건문
false || console.log('hi')
false일 경우에만 hi가 출력됨
&& 을 사용할 시
true일 경우에만 hi 출력
컴퓨터는 비교보다는 숫자를 사용하는 형태로 프로그램으로 짜는게 더 좋다.
배열
length 배열 안에 요소 갯수를 알려준다.
push 요소를 추가해준다.
배열이 10개까지만 있어도 fruit[20] 하면 20 번째에 값이 들어가고 값이 없는 곳은 empty로 출력
splice 요소 제거
배열.splice(인덱스, 제거할 요소 갯수)
indexOf 를 통해 몇번째에 검색할 값이 있는지 확인 후 인덱스를 보내고 그것을 splice에 집어넣어 잘나내기를 한다.
배열. splice(인덱스, 0 , 요소) 이를 사용하면 요소를 지정한 인덱스 위치에 추가한다.
현재에는 비파과 처리를 주로 사용함 그전에는 메모리 문제 때문에 파괴 처리를 하였지만, 현재 메모리는 여유로운 상태
for ( i in 배열) ← 배열의 요소 갯수만큼 반복 i 숫자
for( i of 배열) ← i의 입력이 배열값이 들어간다.
for(let i = 0; i < 반복횟수 i++)
continue 를 쓰면 다음 반복문으로 넘어간다. continue 아래 문구 패스
매개변수
나머지 매개변수
만약 내가 만든 함수의 입력값에 배열을 직접 넣어야하는 상황이 생긴다면 매번 대괄호를 넣기 힘들기 때문에
...매개변수 즉 점 3개를 앞에 써주면 1, 2, 3 을 넣어줘도 [1,2,3] 이라는 배열로 인식하게 된다.
콜백 함수 ← 다른 함수를 매개변수로 가져올 수 있다.
익명 함수 ← 안전을 위해 익명 함수 사용하는 것이 더 안전
익명 함수를 사용 하면 우리가 글을 읽는 순에 맨 마지막 함수가 호출 함수로 지정
선언적 함수
선언적 함수도 쓰여서 콜할 수 있지만 호출되는 함수가 다를 수 있기 때문에 유의
객체는 배열과 비슷한 형태
typeof([]) 하면 object를 반환
배열은 인덱스와 요소가 있다면 객체는 키와 속성이 존재한다.
아래와 같은 객체가 존재한다면 과일,유형, 원산지는 Key이고 사과,열대과일 등은 속성이 되는 것이다.
다른 글에도 객체에 대해 설명했는데 학교라는 큰 틀에 교실이 있고 그 안에 교실의 key인 학생 인원이 있고 속성은 실제 학생수를 지칭하는 것을 예로 들 수 있겠다.
const product = {
과일: '사과, 바나나, 멜론',
유형: '열대과일',
원산지: '필리핀, 베트남'
}
procut['과일'] 시 사과,바나나,멜론 출력 이와 같은 출력 문구로는 product.과일 도 동일 출력
공백등이 존재할 때는 쿼터(") 를 사용하여 문자열로 지칭해줘야한다.
메소드(method) 는 속성이 일반값이 아니라 값을 입력받아야하는 경우 이러한 함수 자료형을 메소드라 부름
this 를 사용하면 자신의 속성에 접근 가능하다.
동적으로 객체 속성 추가 및 제거
const student = {}
student.이름 = '하윤성'
delete student.이름
하면 student에는 이름 : '하윤성' 이 들어갔다가 삭제되어 {}로 나오게 된다.
기본 자료형은 객체를 제외한 형태로써 숫자, 문자열, 불이 기본 자료형이다.
그래서 속성을 지정해줘도 undefiend가 나오게 된다. 그렇다면 어떻게 해야할까 그 해답은 객체를 선언하는 것이다.
const 객체 = new 객체 자료형 이름()
기본 자료형의 경우 메소드들이 나오는데 이 경우 일시적으로 객체로 상승시켜주는 것으로 호출 후에는 기본 자료형으로 돌아온다.
JSON(Javascript Object Notation) 자바스크르빝의 객체처럼 자료를 표현하는 방식
얕은 복사 : 특정 배열을 복사한 후 push를 하면 두 배열 모두 push한 값을 갖는다.
깊은 복사 : 특정 배열을 복사 할 때 ...배열로 복사를 하면 push한 값은 한 쪽 배열에만 들어간다. - 두 객체를 완전하게 독립적으로 사용
객체 지향 패러다임 : 객체를 우선적으로 생각하여 프로그램을 만든다는 방법론
추상화 : 프로그램에서 필요한 요소만을 사용해서 개체를 표현하는 것을 의미
클래스 : 객체를 안전하고 효율적으로 만들 수 있게 해주는 문법
인스턴스 : 클래스를 기반으로 생성한 객체
생성자 : 클래스를 기반으로 인스턴스를 생성할 때 처음 호출되는 메소드이다.