변수
let number = 10 // 선언 및 초기값 할당
number = 20 // 재할당
let number = 10 // 선언 및 초기값 할당
let number = 20 // 재선언 불가능
const number = 10 // 선언 및 초기값 할당
number = 10 // 재할당 불가능
const number = 10 // 선언 및 초기값 할당
const number = 20 // 재선언 불가능
const number
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
b = 20
console.log(a) // 10
console.log(b) // 20
const obj1 = {name : 'Alice', age : 30}
const obj2 = obj1
obj2.age = 40
console.log(obj1.age) // 40
console.log(obj2.age) // 40
원시자료형
const a = 13
const b = -5
const c = 3.14 // float - 숫자 표현
const d = 2.998e8 // 2.998 * 10^8 = 299,800,000
const e = Infinity
const f = -Infinity
const g = NaN // Not a Number를 나타내는 값
const firstName = 'Tony'
const lastName = 'Stark'
const fullName = firstName + lastName
console.log(fullName) // TonyStark
const age = 100
const message = '홍길동은 ${age}세 입니다.'
console.log(message) // 홍길동은 100세 입니다
let a = null
console.log(a) // nulllet b
console.log(b) // undefinedjavascript의 설계 실수
null이 원시 자료형임에도 불구하고 object로 출력되는 이유는 설계 당시 버그를 해결하지 않은 것
해결하지 못한 이유는 이미 null 타입에 의존성을 띄고 있는 수 많은 프로그램들이 망가질 수 있기 때문
typeof null // "object"
typeof undefined // "undefined"
| 데이터 타입 | false | true |
|---|---|---|
| undefined | 항상 false | X |
| null | 항상 false | X |
| Number | 0, -0, NaN | 나머지 모든 경우 |
| String | ''(빈 문자열) | 나머지 모든 경우 |
연산자
let a = 10
a += 10
console.log(a) // 10
a -= 3
console.log(a) // 7
a *= 10
console.log(a) // 70
a %= 10
console.log(a) // 0
let x = 3
const y = x++
console.log(x, y) // 4 3
let a = 3
const b = ++a
console.log(a, b) // 4 4
3 > 2 // true
3 < 2 // false
'A' < 'B' // true
'Z' < 'a' // true
'가' < '나' // true
console.log(1 == 1) // true
console.log('hello' == 'hello') // true
console.log('1' == 1) // true
console.log(0 == false) // true
일치 연산자 사용 권장console.log(1 === 1) // true
console.log('hello' === 'hello') // true
console.log('1' === 1) // false
console.log(0 === false) // false
true && false // false
true && true // true
false || true // true
false || false // false
!true // false
1 && 0 // 0
0 && 1 // 0
4 && 7 // 7
1 || 0 // 1
0 || 1 // 1
4 || 7 // 4
조건문
const name = 'customer'
if (name === 'admin'){
console.log('관리자님 환영해요')
} else if (name === 'customer'){
console.log('고객님 환영해요')
} else{
console.log('반갑습니다. ${name}님')
}
const age = 20
const message = (age >= 18) ? '성인' : '미성년자'
console.log(message) // '성인'
반복문
while (조건문) {
}
let i = 0
while (i < 6) {
console.log(i)
i += 1
}
for([초기문];[조건문];[증감문];){
}
for(let i = 0; i < 6; i++;){
console.log(i)
}
for (variable in object){
statement
}
const fruits = {a: 'apple', b:'banana'}
for (const property in object){
console.log(property) // a, b
console.log(object[property]) // apple, banana
}
for (variable of object){
statement
}
const numbers = [0,1,2,3]
for (const property of object){
console.log(property) // 0, 1, 2, 3
}
const arr = ['a', 'b', 'c']
for (const i in arr){
console.log(i) // 0, 1, 2
}
for (const i of arr){
console.log(i) // a, b, c
}
참고
function foo(){
var x = 1
console.log(x) // 1
}
console.log(x) // ReferenceError : x is not defined
console.log(name) // undefined => 선언 이전에 참조
var name = '홍길동' // 선언
// 위 코드를 암묵적으로 아래와 같이 이해
var name // undefined로 초기화
console.log(name)
var name = '홍길동'
console.log(name) // undefined
var = name = '홍길동'
console.log(age) // ReferenceError: Cannot access 'age' before initialization
let age = 30
console.log(height) // ReferenceError: Cannot access 'height' before initialization
const height = 170