var
: ES6 이전에 쓰였던 유일한 변수 선언법으로 ES6 이후로는 사용이 권장되지 않고 있다
const
: constant의 줄임말로, 변하지 않는 값을 저장할때 주로 사용되므로 재선언, 재할당이 둘다 허용되지 않는다
let
: 재선언은 불가능하지만 재할당은 가능하다
const | let | var | |
---|---|---|---|
재선언 / 재할당 | 재선언: 불가능 재할당: 불가능 | 재선언: 불가능 재할당: 가능 | 재선언: 가능 재할당: 가능 |
스코프** | 블럭 스코프 | 블럭 스코프 | 함수 스코프 |
위와 같은 차이점을 코드로 봤을때는 이런 형태이다
const a = 1
const a = 2 // 재선언: 에러
a = 3 // 재할당: 에러
let b = 1
let b = 2 // 재선언: 에러
b = 3 // 재할당: 가능
var c = 1
var c = 2 // 재선언: 가능
c = 3 // 재할당: 가능
Javascript에서는 변수 선언하고 할당하는 행위가 나눠져 있다
// 선언과 할당을 개별적으로 하는 코드
// 1. 선언
let a
// 2. 할당
a = 1 // 초기화 시점
// 선언과 할당을 동시에 하는 코드
let b = 2 // 초기화 시점
크게 Primitive Type과 Reference Type 두가지로 나뉜다
Primitive Type | Reference Type | |
---|---|---|
특징 | - Object가 아닌 기본 타입 - 실제 값 자체가 담긴다 - 복사시 실제 값이 담긴다 | - Object 형태 - 값의 주소가 저장된다 - 복사시 참조 값이 복사된다 |
예시 | 숫자, 문자열, undefined, null, Boolean | 객체(object), 함수(function), 배열(array) |
데이터에 연산을 하면서 새로운 값을 할당하는 연산자이다
let x = 0
// 파이썬과 동일하게 다음과 같은 연산을 할 수 있다
x += 1
x -= 1
x *= 10
x /= 10
// x의 값을 1씩 증가 또는 감소 시키는 다음과 같은 연산도 할 수 있다
// 주로 for, while loop에서 값을 1씩 증가시키면서 looping을 할때 쓰인다
x++
x--
Javascript에서는 두가지 타입의 비교연산이 존재한다
동등 비교 연산자 (==): Javascript에서 내부적으로 형변환이 진행되어, 형 변환 된 값이 같은지 다른지를 비교한다
Boolean 값과 비교시 각 데이터 타입은 다음과 같이 변환된다 (출처)
Type | false | true |
---|---|---|
Undefined | 항상 | X |
Null | 항상 | X |
Boolean | false | true |
Number | +0, -0, NaN | 그 외 모든 경우 |
String | 빈 문자열("") | 그 외 모든 경우 |
Symbol | X | 항상 |
BigInt | 0 | 그 외 모든 경우 |
Object | X | 항상 |
일치 비교 연산자 (===): 형변환을 하지 않고, 엄격한 비교(데이터의 값과 타입을 모두 비교)가 이루어진다
&&
: and 연산자||
: or 연산자!
: not 연산자(a ? b : c)
: a의 조건식이 참이라면 b를 반환, 거짓이라면 c를 반환console.log(true ? 1 : 2) // true
python 문법에서 다음과 동일하다
a = true
print(1 if a==True else 2)