let number = 10 // 1. 선언 및 초기값 할당
number = 20 // 2. 재할당 (가능)
let number = 10 // 1. 선언 및 초기값 할당
let number = 20 // 2. 재선언 (불가능)
const number = 10 // 1. 선언 및 초기값 할당
number = 10 // 2. 재할당 (불가능)
const number = 10 // 1. 선언 및 초기값 할당
const number = 20 // 2. 재선언 (불가능)
const nubmer // const' declarations must be initialized
// 선언시 반드시 초기값 설정 필요
let x = 1
if (x === 1) {
let x = 2
console.log(x) // 2
}
console.log(x) // 1
const bar = 'bar'
console.log(bar) // bar
bar.toUpperCase()
console.log(bar) // bar
let a = 10
let b = a // 주소(a가 바라보는 10)가 복사된 게 아니라 10이라는 값을 넣은 것
b = 20
console.log(a) // 10
console.log(b) // 20
‘+’ 연산자를 사용해 문자열끼리 결합 가능
곱셈, 나눗셈, 뺄셈 불가능
const firstName = 'Tony'
const lastName = 'Stark'
const fullName = firstName + lastName
console.log(fullName) // TonyStark
변수의 값이 없음을 의도적으로 표현할 때 사용
let a = null
console.log(a) // null
변수 선언 이후 직접 값을 할당하지 않으면 자동으로 할당됨
let b
console.log(b) // undefined
사실 위의 null처럼 undefined도 let a = undefined와 같이 할당해줄 수 있음
이미 null 타입에 의존성을 띄고 있는 수많은 프로그램들이 망가질 수 있기 때문에 해결 X (하위 호환 유지)
typeof null // "object"
typeof undefined // "undefined"
데이터 타입 | false | true |
---|---|---|
undefined | 항상 false | X |
null | 항상 false | X |
Number | 0, -0, NaN | 나머지 모든 경우 |
String | 빈 문자열 | 나머지 모든 경우 |
증가 연산자 (++)
감소 연산자 (—)
+= 또는 -= 같이 보다 명시적인 표현으로 작성하는 것을 권장
let x = 3
const y = x++
console.log(x, y) // 4 3
let a = 3
const b = ++a
console.log(a, b) // 4 4
두 피연산자가 같은 값으로 평가되는지 비교 후 boolean 값 반환
‘암묵적 타입 변환’을 통해 타입을 일치시킨 후 같은 값인지 비교
두 피연산자가 모두 객체일 경우 메모리의 같은 객체를 바라보는지 판별
console.log(1 == 1) // true
console.log('hello' == 'hello') // true
console.log('1' == 1) // true
console.log(0 == false) // true
두 피연산자의 값과 타입이 모두 같은 경우 true를 반환
같은 객체를 가리키거나, 같은 타입이면서 같은 값인지를 비교
엄격한 비교
암묵적 타입 변환이 발생하지 않음
특수한 경우를 제외하고는 동등 연산자가 아닌 일치 연산자 사용을 권장
console.log(1 === 1) // true
console.log('hello' === 'hello') // true
console.log('1' === 1) // false
console.log(0 === false) // false
const obj1 = { name: 'Alice', age: 30 }
const obj2 = obj1
obj2.age = 40
console.log(obj1.age) // 40
console.log(obj2.age) // 40
const capitals = {
korea: '서울',
japan: '도쿄',
china: '베이징',
}
for (const capital of capitals) {
console.log(capital) // TypeError: capitals is not iterable
}
여기서 속성 : key
for (variable in object) {
statement
}
for (variable of iterable) {
statement
}