camelCase
PascalCase
SNAKE_CASE
let
- 재할당 할 예정인 변수 선언 시 사용
- 변수 재선언 불가능
let a = 10 // 선언 및 초기값 할당
a = 9 // 재할당 가능
let b = 10 // 선언 및 초기값 할당
let b = 50 // 재선언 불가
- 블록 스코프
- if, for, 함수 등의 중괄호 내부
- 블록 바깥에서 접근 불가능
const
- 재할당 할 예정이 없는 변수 선언 시 사용
(값의 조작은 가능)
- 변수 재선언 불가능
const a = 10 // 선언 및 초기값 할당
a = 9 // 재할당 불가
const b = 10 // 선언 및 초기값 할당
const b = 50 // 재선언 불가
- 블록 스코프
- 생각보다 재할당 할 일이 없어서 가장 보편적으로 사용!
var
- 재선언 및 재할당 모두 가능
- 호이스팅이 되는 특성으로 인해 문제 발생 가능
- 변수를 선언 이전에 참조할 수 있는 현상
- 변수 선언 이전의 위치에서 접근 시 에러가 아닌 undefined 반환
=> ES6 이후부터는 let, const 사용 권장
- 함수 스코프
- 함수의 중괄호 내부
- 함수 바깥에서 접근 불가능
숫자(Number)
- 정수, 실수 구분 없음
문자열(String)
- 텍스트 데이터
- 작은따옴표 또는 큰따옴표 모두 가능
- 템플릿 리터럴
따옴표 대신 backtick
${expression}
const a = 'Hi'
const b = 'Hello'
const greeting = `${a} {b}`
console.log(greeting) // Hi Hello
undefined
- 변수의 값이 없음을 나타냄(개발자의 의도X)
null
- 변수의 값이 없음을 의도적으로 표현할 때
- typeof null : object
Boolean
- 논리적 참 또는 거짓을 나타냄
- true 또는 false
- 조건문 또는 반복문에서 유용하게 사용
- 자동 형변환
const a = 1004
const b = '1004'
console.log(a == b) // true
const a = 1004
const b = '1004'
console.log(a === b) // false
const result = Math.PI > 4 ? 'YES' : 'NO'
console.log(result) // No
const dinner = 'sushi'
switch(dinner) {
case 'chicken': {
console.log('치킨')
break
}
case 'sushi': {
console.log('초밥')
break
}
default: {
console.log('라면')
}
}
// 초밥
}
}
}
const menus = ['치킨', '초밥', '라면']
for (let menu of menus) {
menu = menu + '!' // 재할당 가능
console.log(menu)
}
for (const menu of menus) {
// 재할당 불가
// 한번 반복할 때마다 블록스코프가 갱신되는 느낌이라서 const 사용 가능
console.log(menu)
}