| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- 누적합
- 배포
- GROUPBY
- MST
- EC2
- Pirogramming
- 프로그래머스
- 크루스칼
- django
- union find
- 구현
- 자바
- 코딩테스트
- OrderBy
- 백준
- Baekjoon
- SQL
- BFS
- SQL코딩테스트
- JOIN
- 최단경로
- AWS
- 알고리즘
- 피로그래밍
- db
- 다익스트라
- Database
- Java
- 그래프 탐색
- 프림
Archives
- Today
- Total
NullNull
JavaScript 데이터 타입 본문
자바스크립트 데이터 타입
자바스크립트 특징
- 동적 타이핑 언어
- 느슨한 타입 체크 언어
데이터 타입
- 기본 타입
- Number
- String
- Boolean
- Null
- Undefined
- 참조 타입
- 기본 타입을 제외한 모든 객체
Number
- 자바스크립트에서 모든 숫자는 Number Type
- 다른 언어가 Integer, Float, 등으로 구분되어 있는 것과 다름
String
- 한 번 선언된 문자열은 수정되지 않음
- 다른 언어의 char은 자바스크립트에선 길이가 1인 String 과 같음
Boolean
- True, False 값
Null & Undefined
- 두 타입 모두 값이 비어 있음을 나타냄. 사용하는 의도에 차이가 있음
- Null → 개발자가 의도적으로 값을 비워 둠. Null의 타입은 Object
- Undefined → 기본적으로 값이 할당되지 않음. Undefined는 타입이자 값
let nullVar = null;
let undefinedVar;
console.log(typeof nullVar); // object
console.log(nullVar); // null
console.log(typeof undefinedVar); // undefined
console.log(undefinedVar); // undefined
// 해당 값이 null 값인지 판단하기
console.log(typeof nullVar === null); // false
console.log(nullVar === null); // true
참조 타입
참조 타입은 자바스크립트의 기본 타입을 제외한 모든 것이며 객체 타입이라고도 불림
객체를 생성하는 방법
기본 제공 Object() 생성자 함수를 이용하는 방법
let foo = new Object(); foo.name = 'foo'; foo.age = 30; foo.gender = 'male'; console.log(typeof(foo)); //object객체 리터럴을 이용하는 방법
let foo = { name : 'foo', age : 30, gender : 'male', } console.log(typeof(foo)); //object생성자 함수를 이용하는 방법
function Person(name, age, gender) { if (!(this instanceof arguments.callee)){ return new Person(name, age, gender); } this.name = name; this.age = age; this.gender = gender; } //이때 무조건 new를 사용해야 함 let foo = new Person('foo', 30, 'male'); console.log(foo); //Person
객체 프로퍼티
모든 객체는 프로퍼티가 존재함. 프로퍼티는 그 객체가 가지는 속성을 의미하고 key, value 쌍으로 구성됨
객체 프로퍼티는 조회, 수정, 삭제, 삽입이 가능함
//삽입 obj['key'] = value; //조회 obj.key; //수정 obj.key = newValue; //삭제 delete obj.key;
이때, 객체 프로퍼티를 삭제할 때 사용한 delete 는 객체의 프로퍼티를 삭제하지만 객체 자체를 삭제할 때에는 사용할 수 없음
//obj 객체의 key 프로퍼티를 삭제함 delete obj.key; //obj 객체는 삭제되지 않음 delete obj;
객체 프로토타입
- 자바스크립트의 모든 객체가 가지고 있는 프로퍼티
- 모든 객체는 자신의 부모 역할을 하는 객체와 연결되어 있고 이를 이용하여 부모 객체의 프로퍼티를 사용할 수 있음
- 프로토타입은 객체가 생성될 때 할당되며 동적으로 변동이 가능함
배열
자바스크립트의 배열 특징
- 내부의 데이터 타입이 서로 다를 수 있음
- 크기가 동적으로 변경될 수 있음
- length 프로퍼티 : 배열의 길이를 나타내고 배열 내의 가장 큰 인덱스에 1을 더한 값 (0부터 인덱싱 하므로)
생성
//생성 방식
let arr1 = []
let arr2 = new Array()
//생성할 때 값을 순차적으로 넣을 필요가 없고 동적으로 아무 인덱스에 추가할 수 있음
let emptyArr = [];
console.log(emptyArr[0]) //undefined
emptyArr[0] = 100;
emptyArr[3] = 'eight';
console.log(emptyArr) //[100, undefined x 2, 'eight']
// 위의 예시처럼 배열의 0, 3에 값을 할당하게 되면, 값이 할당되지 않은 1, 2번째에는 undefined가 할당됨
삭제
//배열의 value만 삭제하고 공간은 남겨두고 싶을 경우 -> delete
//배열의 value와 공간을 모두 삭제하고 싶을 경우 -> splice
let arr = ['zero', 'one', 'two', 'three'];
arr.splice(2, 1);
console.log(arr); //['zero', 'one', 'three'];
delete arr[1];
console.log(arr); //['zero', undefined x 1, 'three'];
유사 배열 객체
일반 객체에 length 프로퍼티가 존재하는 것. 대표적인 예시로 함수의 인자들이 전달되는 arguments 객체가 유사 배열 객체이다.
유사 배열 객체는 배열이 아님에도 불구하고 자바스크립트의 표준 배열 메서드를 사용하는 게 가능하다.
Array.prototype.[메서드].apply(객체, [인자, 인자])
Array.prototype.[메서드].call(객체, 인자, 인자)
let arr = ['bar']; // 배열 let obj = {name : 'foo', length : 1}; // 유사배열 arr.push('baz'); console.log(arr); // 출력값 : ['bar', 'baz'] Array.prototype.push.apply(obj, ['baz']); console.log(obj); // 출력값 : {'1' : 'baz', name: 'foo', length: 2}
데이터 타입 주의할 점
console.log(!!{}) // true
//객체는 값이 비어있더라도 true로 변환됨. 참조형이기 때문'프로그래밍 언어 > JavaSrcipt' 카테고리의 다른 글
| JavaScript 키워드 비교 (var, let, const) (0) | 2022.10.23 |
|---|
Comments