undefined은 변수를 선언하고 값을 할당하지 않은 상태
null은 변수를 선언하고 빈 값을 할당한 상태
즉, undefined는 자료형이 없는 상태 (독립 자료형이 존재)
자료형 ❓
1. 숫자형 – 정수, 부동 소수점 숫자 등의 숫자를 나타낼 때 사용합니다. 정수의 한계는 ±253 입니다
2. bigint – 길이 제약 없이 정수를 나타낼 수 있습니다
3. 문자형 – 빈 문자열이나 글자들로 이뤄진 문자열을 나타낼 때 사용합니다. 단일 문자를 나타내는 별도의 자료형은 없습니다
4. 불린형 – true, false를 나타낼 때 사용합니다
5. null – null 값만을 위한 독립 자료형입니다. null은 알 수 없는 값을 나타냅니다
6. undefined – undefined 값만을 위한 독립 자료형입니다. undefined는 할당되지 않은 값을 나타냅니다
7. 객체형 – 복잡한 데이터 구조를 표현할 때 사용합니다
8. 심볼형 – 객체의 고유 식별자를 만들 때 사용합니다
typeof null // 'object'
typeof undefined // 'undefined'
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null // true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
isNaN ❓
매개변수가 숫자인지 검사하는 함수
undefined
undefined는 원시값(Primitive Type)으로, 선언한 후에 값을 할당하지 않은 변수나 값이 주어지지 않은 인수에 자동으로 할당된다. 이 값은 전역 객체의 속성 중 하나로, 전역 스코프에서의 변수이기도 하다. 따라서 undefined 변수의 초기 값은 undefined 원시 값이다
undefined는 예약어가 아니기 때문에, 전역 범위 외에서 변수 이름으로 사용할 수 있다. 그러나 유지보수와 디버깅에 어려움을 겪을 수 있으므로 피하는 것이 좋다
예약어 ❓
특별한 의미를 가지고 있어, 변수나 함수명 등으로 사용 할 수 없는 단어
abstract | arguments | await* | boolean |
break | byte | case | catch |
char | class* | const | continue |
debugger | default | delete | do |
double | else | enum* | eval |
export* | extends* | false | final |
finally | float | for | function |
goto | if | implements | import* |
in | instanceof | int | interface |
let* | long | native | new |
null | package | private | protected |
public | return | short | static |
super* | switch | synchronized | this |
throw | throws | transient | true |
try | typeof | var | void |
volatile | while | with | yield |
변수가 undefined를 반환하는 경우
1. 값을 할당하지 않은 변수
2. 메서드와 선언에서 변수가 할당받지 않은 경우
3. 함수가 값을 return 하지 않았을 때
null
null은 원시값(Primitive Type) 중 하나로, 어떤 값이 의도적으로 비어있음을 표현한다. undefined는 값이 지정되지 않은 경우를 의미하지만, null의 경우에는 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미한다
null은 undefined처럼 전역 객체의 속성 중 하나가 아니라 리터럴 값이다
상수와 리터럴 ❓
상수와 리터럴 둘 다, 변하지 않는 값(데이터)를 의미한다
상수는 변하지 않는 변수를 뜻한다 (숫자만 넣는게 아님)
리터럴은 데이터 그 자체를 뜻한다
변수에 넣는 변하지 않는 데이터를 의미하는 것이다
let a = 1;
a는 상수이고 리터럴은 1이다
typeof null은 출력하면 object이다. 하지만 이는 여전히 원시 타입으로, JavaScript에서는 구현 버그로 간주한다
'Language > JavaScript' 카테고리의 다른 글
[JS] 호이스팅이란? (0) | 2021.07.07 |
---|---|
[JS] Promise란? (0) | 2021.07.02 |
[JS] Iterable object, Array-like object (0) | 2021.06.23 |
[JS] ES6 특징 (0) | 2021.06.22 |
[JS] 프로토타입과 클래스 (0) | 2021.02.26 |
댓글