- 데이터 타입
- 변수, 상수 : 스코프, 호이스팅
- 배열 메서드
- 객체 메서드 : 객체 선언하기
- 함수 선언식, 함수 표현식
- 연산자
- 반복문 : for, while, do-while
- 조건문 : if, break, continue, swich
상수선언 const vs 변수선언 let
const obj = {name : 'apple'}
obj.name = 'banana'
console.log(obj.name) // -> banana
console.log(obj) // -> {name: 'banana', num: 2}
'str'.toUpperCase()
'STR' : 대문자화'str'.indexOf('t')
1 : 인덱스 찾기(대소문자 구분함)' str '.trim()
'str' : 공백 없앰let fruit = ['apple', 'banana','orange']
console.log(fruit.length) //-> 3
요소(element)
라고 부른다array[array.length - 1]
배열이름.length
배열이름[인덱스]
배열이름.push(넣을값)
배열이름.splice(인덱스,삭제할개수, 넣을 값)
배열이름.splice(인덱스,삭제할개수)
배열이름.pop()
배열이름.indexOf()
const idx = 배열이름.indexOf('찾을값')
배열이름.splice(idx, 1)
객체 | 배열 | |
---|---|---|
공통점 | 데이터를 담아놓은 그릇, 인덱스 지정 가능 | |
차이점 | 인덱스를 문자로 지정 가능(key-value) | 인덱스 자동 지정 |
다른 언어 | 연관배열(associative array), 맵(map), 딕셔너리(Dictionary) | - |
표기 | 중괄호 { key:value } | 대괄호 [ element ] |
const a = {name:'강아지', age:2, sound:'멍멍'}
const a = new Object();
a['name'] = '강아지';
a['age'] = 2;
a['soune'] = '멍멍';
아래 3가지 모두 같은 객체를 표현한 코드
a['age'] //-> 2
a['ag'+'e'] //-> 2
: 대괄호 안의 내용은 문자열이므로 연산 가능
a.age //-> 2
: 프로그래밍 코드
function 함수명 () {}
const 변수명 = function 함수명 () {};
const 변수명 = function () {};
호출 시 변수명이 사용되므로 함수명은 생략되어도 무관하며, 함수명을 생략한 경우 익명 함수라고 부른다.
함수명()
입력하면 실행된다함수(1)과 중복되는 내용은 생략
var | let | const | |
---|---|---|---|
변수 Variable | 변수 Variable | 상수 constant | |
scope | 전역변수 global scope | 블록레벨스코프(지역변수) block-level scope | 블록레벨스코프(지역변수) block-level scope |
Data type | 변경가능 Mutable | 변경가능 Mutable | 변경불가 Immutable |
장점 | 유연성 | 보안(security), 스레드 안전성(thread safety), 휴먼에러방지(reduce human mistakes) | 보안(security), 스레드 안전성(thread safety), 휴먼에러방지(reduce human mistakes) |
메모리 | rw (read and write) | rw (read and write) | r(read only) |
first-class function을 지원합니다
: 함수도 다른 데이터타입처럼 변수 할당이 가능, 함수의 인자, 리턴 타입으로도 지정 가능primitive type | object type | |
---|---|---|
저장되는 데이터 | 값 value | 레퍼런스 reference |
데이터 변경 | X (Immutable) | O (Mutable; 내용이 아닌, 주소를 바꿈) |
+, -, *, /, %, **
++(1을 증가), -- (1을 감소)
pre-increment : b = ++a
a에 1을 증가시킨 후 b에 할당
post-increment : b = a++
a를 b에 할당 한 후 1을 증가시킴
let a = 2
const b = ++a //a=3 -> b=3
const c = a++ //a=3 -> c=3 -> c=4
let a = 2
const b = a++ //x=2 -> y=2 -> y=3
const c = ++a //x=3 -> z=3
x += y
x = x + y
-=
x = x - y
*=
x = x*y
/=
x = x/y
<, <=, >, >=
||
OR - 첫번째 value 가 true면 연산을 멈춘다. 연산 작업량을 줄이기 위해서 단순한 것을 가장 먼저 적는다.
&&
AND - 첫번째 value 가 false면 연산을 멈춘다. 연산 작업량을 줄이기 위해서 단순한 것을 가장 먼저 적는다.
!
NOT -
==
loose equality : 0, NULL, EMPTY STRING('') -> FALSE 로 간주
===
strict equality : data type 비교 -> 0을 false로 간주하지 않음. 0은 number type 이므로.
null == undefined
TRUEnull === undefined
FALSEif (){~}
else if (){~~}
else {~~~}
조건식 ? true인 경우 결과값 ; false인 경우 결과값
function example(…) {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
조건문에서 else if가 여러번 반복되는 경우 사용하면 가독성 상승
타입 검사, emum 타입(사용자 정의 리스트)의 검사에 유용
swich(변수) {
case 조건1:
실행1;
break;
case 조건2:
실행2;
break;
case 조건3:
실행3;
break;
}
for(let i = 0; i < 5; i++){ //초기식; 조건식; 증감식
console.log('hello')
}
이중 for문 - 연산이 복잡해지므로 되도록이면 간소화하기
블록레벨변수 i와 비교 후 코드 블럭 실행
let i = 0; //초기식
while (i < 5){ //조건문
console.log('hello') //코드블럭
i++; //증감식
}
코드 블럭을 실행한 후 블록레벨변수 i와 비교
let i = 0; //초기식
do {
console.log('hello') //코드블럭
i++; //증감식
} while (i < 5)
break
continue