문법 기초
변수와 식별자
식별자
- 식별자(identifier) : 변수를 구분할 수 있는 변수명
$
또는 _
로 시작
- 대소문자 구분, 클래스명 외에는 소문자로 시작
식별자 작성 스타일
- 카멜 케이스(camelCase)
- 파스칼 케이스(PascalCase)
- 대문자 스네이크 케이스(SNAKE_CASE)
변수 선언
let
- 재할당 할 예정인 변수 선언 시 사용
- 변수 재선언 불가능
- 블록 스코프
let ljm // 선언
console.log(ljm) // undefined
ljm = 0850 // 할당
console.log(ljm) // 850
ljm = 0 // 재할당
let ljm // 재선언, Error 발생
let jstest = 123 // 선언+할당
블록 스코프
- if, for, 함수 등의 중괄호 내부
- 블록 스코프를 가지는 변수는 블록 바깥에서 접근이 불가(블록 내부,외부가 단절)
const
- 재할당 할 예정이 없는 변수 선언 시 사용
- 변수 재선언 불가능
- 블록 스코프
var
- 재선언, 재할당 모두 가능
- 예전(ES6이전)에 변수 선언시 사용하던 키워드
- 호이스팅되는 특성으로 인해 사용 추천X
- 변수를 선언 이전에 참조가 되는 현상
- 변수 선언 이전에 호출시 undefined 반환
- 함수 스코프
데이터 타입
원시 타입(Primitive type)
- 객체가 아닌 기본 타입
- 변수에 해당 타입의 값이 담김
- Number, String, Boolean, undefined, null, symboll
참조 타입(Reference type)
- 객체 타입의 자료형
- 변수에 해당 객체의 참조 값(주소)가 담김
- 함수, 배열, 객체
원시 타입
Boolean
- true, false로 표현(대문자x)
- 논리적 참 거짓을 나타냄
- 조건문, 반복문에서 데이터 타입이 Boolean으로 자동 변환됨
- object는 항상 참
- python에서는 빈 리스트([])는 거짓이지만, JS에선 참
Number
- 정수,실수 구분 없는 하나의 숫자 타입
- 부동소수점 형식
- Infinity, -Infinity, NaN(Not-A-Number) 존재
- NaN : ljm / 100 과 같이 계산이 불가능한 경우 반환값
- Boolean 변환시 0,-0, NaN은 거짓
String
- 16비트 유니코드 문자의 집합
',"
둘 다 사용 가능
- 템플릿 리터럴(Template Literal)
undefined
- 변수의 값이 없음을 나타냄
- 변수 선언 이후 값을 할당하지 않을경우 자동 할당
- Boolean 변환시 항상 거짓
null
- 변수의 값이 없음을 의도적으로 표현할 떄 사용
- typeof 연산자 사용시 결과가 object로 표현됨
typeof undefined // undefined
- Boolean 변환시 항상 거짓