인터프리터(Interpreter)
: 코드를 한 덩어리씩 실행해 결과를 출력하는 방식컴파일(compile)
: 코드를 컴퓨터가 이해할 수 있는 언어로 변환하는 과정을 거친 후 한 번에 실행하는 방식
REPL
특성을 가진 브라우저 콘솔
- 브라우저의 콘솔은 코드를 한 줄씩 입력 받고(
R
ead),- 받은 입력을 평가하고(
E
val),- 결과를 출력한 뒤(
P
rint),- 다시 프롬프트가 나타나 새로운 입력을 기다리는 과정을 반복한다(
L
oop).
값(value)
은 프로그램이 조작할 수 있는 데이터를 의미
자료형(data type)
이라고 한다.문자열 안에 큰따옴표(\")가 있어요
\
표시를 통해 해당 문자열을 기존과는 다르게 처리하라고 엔진에게 알려준다.이스케이핑
이라고 하며, 따옴표를 이스케이핑한다
라고 표현한다.`저도 문자열입니다.`
템플릿 리터럴
이라고 한다.\n
을 사용하지 않아도 줄바꿈이 된다.5
"5"
는 자료형)5e4 // 5 * 10000 = 50000
5e+4 // 5 * 10000 = 50000
5e-3 // 5 * (1/10000) = 0.005
숫자형 앞에 다음과 같은 형태를 붙이면 다양한 진법 표현이 가능하다.
0b
: 2진법0o
: 8진법0x
: 16진법parseInt
parseInt("3.14") // 3
parseFloat
parseFloat('3.14') // 3.14
parseInt
를 활용해 다른 기수법 적용하기parseInt(111, 2) // 111의 2진법 표현 = 7
NaN
도 타입은 숫자형이다.2 / 0 // Inifnity
Infinity
의 타입도 숫자형이다.'1' + 0 // "10"
'9' - 5 // 4
이처럼 값의 자료형이 바뀌는 현상을 형 변환
이라고 한다.
0.1 + 0.2 // 0.3000000000000004
부동소수점 문제
이다.컴퓨터는 1
과 0
밖에 모른다.
1
과 0
은 참(true
)과 거짓(false
)에 대응된다.
NaN == NaN // false
NaN != NaN // true
false
를 출력한다.!=
비교 연산자에서는 true
를 출력한다.true > false // true
true < false // false
true
는 false
보다 큰 값이다.1
, false = 0
이기 때문에 당연함.'b' > 'a' // true
'ad' > 'ab' // true
'a'.charCodeAt() // 97
charCodeAt
을 사용한다.'3' < 5 // true
'abc' < 5 // false
'abc'
를 숫자형으로 비교하면 NaN이 된다.10 > 5 && 6 < 8
&&
연산자는 좌, 우 표현식이 모두 true
여야 true
를 반환한다.10 < 5 || 6 < 8
||
연산자는 둘 중 하나만 true
여도 true
를 반환한다.10 < 5 || 6 > 8
||
연산자는 모두 false
여야 false
를 반환한다.'a' // true
!!'a' // true
!
연산자를 두 번 썼기 때문에, 거짓이 되었다가 다시 참이 된다. 대부분의 값이 true
를 반환한다.!!false // false
!!'' // false
!!0 // false
!!NaN // false
!
연산자를 두 번 쓴 경우 false
를 반환하는 값은 몇 가지 없으나, 위 4가지가 가장 대표적이다.falsy, truthy
이렇게 형변환 후false
가 되는 값들을거짓인 값(falsy value)
라고 하며,true
가 되는 값을참인 값(truthy value)
라고 한다.
typeof undefined // undefined
!!undefined // false
undefined == false // false
undefined
는 형 변환을 하면 false
가 나오기 때문에 falsy
한 값이다.undefined
와 false
는 같지 않다.undefined == null // true
undefined === null // false
!!undefined // false
null == false // false
undefined
와 null
모두 빈 값을 의미하지만,undefined
도 형 변환을 하면 false
가 나오기 때문에 falsy
한 값이다.undefined
도 false
와 같지는 않다.typeof null // object
null
의 타입은 object
로 나오는데, 이는 유명한 자바스크립트 버그다.null
의 타입은 null
이 나와야 하나, 언어가 만들어진 초창기 실수 때문에 obejct
가 되었다.