일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 노트북 추천
- adapter
- 자바
- 배열
- as?
- 함수
- 오버로딩
- 싱글 스레드
- ListView
- var
- Array
- Overloading
- 코틀린
- HP
- 연산자
- Python
- 안드로이드
- golang
- go
- 리스트 뷰
- 파이썬
- javascript
- 패널 교체
- node.js
- Kotlin
- Android
- 노트북
- 자바스크립트
- Java
- js
Archives
- Today
- Total
Bbaktaeho
[Javascript] undefined, empty, null ( 비어있는 변수, 리턴없는 함수, 배열의 빈 공간) 본문
프로그래밍 (Programming)/자바스크립트 (JavaScript)
[Javascript] undefined, empty, null ( 비어있는 변수, 리턴없는 함수, 배열의 빈 공간)
Bbaktaeho 2020. 3. 30. 17:56반응형
📚 자바스크립트 빈 공간
- undefined, null, empty ..
📗 undefined
비어있다는 의미
-
자바스크립트에서 기본형 데이터 타입에 속함
-
사용자가 명시적으로 지정하지 않으면 비어있는 요소에 접근했을 시에 자바스크립트 엔진(V8)에서 undefined를 부여함
-
값을 대입하지 않은 변수일 때
var v1 = undefined; // 명시적으로 undefinded 지정 var v2; // 아무런 데이터를 할당하지 않음 console.log(v1); console.log(v2);
undefined undefined
-
객체에 존재하지 않는 속성에 접근할 때
var obj = { a: "test1", b: "test2" }; console.log(obj.a); console.log(obj.b); console.log(obj.c);
test1 test2 undefined
-
return이 없는 함수를 호출할 때
function f(a, b) { var result = a + b; } var result = f(10, 20); console.log(result);
undefined
📒 empty
비어있는 배열을 할당할 때는 undefined가 아닌 empty가 지정됨
-
크기가 주어진 빈 배열을 선언할 때
var arr = new Array(5); console.log(arr);
[ <5 empty items> ]
-
빈 배열을 순회했을 때 (forEach)
안 함 new Array(5); var arr2 = [undefined, undefined, undefined, undefined]; var arr3 = []; arr3[3] = "hi"; arr1.forEach(function(e, i) { // 완전히 비었을 때 순회조차 안함 console.log(e, i); }); arr2.forEach(function(e, i) { console.log(e, i); }); arr3.forEach(function(e, i) { console.log(e, i); });
undefined 0 undefined 1 undefined 2 undefined 3 hi 3
-
빈 배열을 순회했을 때 (map)
것뿐임 new Array(5); var arr2 = [undefined, undefined, undefined, undefined]; var arr3 = []; arr3[3] = "hi"; var result1 = arr1.map(function(e, i) { // 순회한 것처럼 보이지만 새로운 빈 배열을 리턴하는 것 뿐임 return e; }); var result2 = arr2.map(function(e, i) { return e; }); var result3 = arr3.map(function(e, i) { return e; }); console.log(result1); console.log(result2); console.log(result3);
[ <5 empty items> ] [ undefined, undefined, undefined, undefined ] [ <3 empty items>, 'hi' ]
-
undefined가 아닌 empty 배열에서 메서드들이 비어 있는 요소에 대해서 어떠한 처리도 안 했음
-
undefined는 비어있음을 의미하지만 값으로 인식하여 동작하기 때문에 순회의 대상이 됨. 이상하게 비어있다고 의미를 가지지만 자신이 값으로 존재한다는 것, 또한 자바스크립트 엔진에서 비어있는 식별자에게 접근할 시 자바스크립트 엔진이 자동으로 undefined를 할당하니 개발자가 명시적으로 undefined를 지정할 경우 혼란이 올 수 있음
-
📘 null
undefined 와 같은 의미를 가짐
-
명시적으로 비어있다고 의미를 부여할 때
var v = null; // 둘은 동등함 console.log(v == undefined); console.log(v == null); // 실제 판단을 위해서는 identity operator를 사용함 console.log(v === undefined); console.log(v === null);
true true false true
- 비어있다를 명시하기 위해서 혼란을 피해 null 사용
반응형