원시 값 🆚 객체
- 원시값의 종류 : 불리언, 숫자, 문자열, null, undefined
- 다른 값은 모두 객체임
- 각 객체는 고유하며, 엄격히 말해 그 자신과만 일치함( 자바의 객체별 주소 개념과 일치)
- 반면, 원시 값은 값이 같으면 같다고 봄
원시 값
- 값으로 비교
- 프로퍼티를 바꾸거나, 추가하거나, 제거할 수 없음( 항상 불변 )
- 원시 데이터형에 프로펕를 설정하거나 가져오면 암묵적으로 객체 래퍼를 생성함
“hello”.toUpperCase();
: String 객체 래퍼를 생성해서 메서드 호출함
undefined 와 null
- undefined는 정보가 없음. 값이 없음 이라는 의미
- null 은 “객체가 아니다” 라는 뜻임
참 같은 값, 거짓 같은 값
- 아래 값들은 다 false로 해석됨
- undefined, null
- 불리언: false
- 숫자 : -0, ,NaN
- 문자열 : ‘’
- Boolean() 함수는 매개변수를 불리언으로 변환해 반환함
숫자
- 자바스크립트의 숫자는
모두 부동소숫점형 숫자
임 - 64비트로 인코딩된 배정밀도의 부동 소수점 (double로 알려진) 숫자임
- NaN (’Not a Number’) : 에러 값임
- Infinity : 에러로 생긴 값일 때가 많음
심벌(Symbol)
- ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값임
- 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이고 외부로 노출되지 않아 확인이 불가능함 ⇒ 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용함
- 객체의 프로퍼티 키로 사용할 수 있는 값은 빈 문자열을 포함하는 모든 문자열 or 심벌 값임
- 심벌은 중복되지 않는 상수 값을 생성하는 것은 물론 기존에 작성된 코드에 영향을 주지 않고 새로운 프로퍼티를 추가하기 위해, 즉 하위 호환성을 보장하기 위해 도입되었음
객체
- 참조로 비교 ( 각 값은 모두 고유함)
- 기본적으로 변경 가능함 ( 프로퍼티를 자유롭게 추가, 변경, 제거 가능)
용어 정의
- 값(value) : 표현식(expression)이 평가(evaluate)되어 생성된 결과
- 리터럴(literal) : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)
- 표현식(expression) : 값으로 평가될 수 있는 문(statement). 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함
- 문(statement) : 프로그램을 구성하는 기본 단위이자 최소 실행 단위임