[Java Script]데이터 타입과 연산자 1

2021. 7. 19. 00:06CSE/Java Script

* 자바스크립트의 데이터 타입

- 기본 타입 : 숫자, 문자열, Boolean, undefined, null

- 참조 타입 : 객체 : 배열, 함수, 정규표현식

 

1. 자바스크립트의 기본 데이터 타입

- 그 자체가 하나의 값을 나타낸다

- 자바스크립트는 변수를 선언할 때 타입을 미리 정하지 않는다 => 느슨한 타입 체크 언어

 

[1] 숫자

- 자바스크립트는 오직 하나의 숫자형만 존재 : 64비트 부동 소수점 형태

- 자바스크립트는 모든 숫자를 실수로 처리 => 연산할 때 주의 (특히 나눗셈!)

 

[2] 문자열

- 작은 따옴표 또는 큰 따옴표로 생성한다

- 한 번 정의된 문자열은 변하지 않는다 => 문자열 수정 불가능

 

[3] Boolean

- true / false로 값을 지정하면 됨

 

[4] null과 undefined

- 둘 다 "값이 비어있음"을 나타냄

- undefined는 타입이자, 값을 나타냄 => 따라서 undefined인지는 typeof로 확인 가능

- null인지 확인하기 위해서는 typeof가 아닌 일치 연산자(===)을 사용해야 함

 

2. 자바스크립트의 참조 데이터 타입 (객체 타입)

- 객체 : 단순히 '이름(key) : 값(value)' 형태의 프로퍼티를 저장하는 컨테이너로서, 해시라는 자료구조와 상당히 유사함

- 참조 타입 객체는 여러 개의 프로퍼티를 포함할 수 있다

 

[1] 객체 생성 방식

① Object() 생성자 함수 이용

var foo = new Object();

foo.name = 'foo';
foo.age = 30;
foo.gender = 'male';

console.log(typeof foo); //object
console.log(foo); //{name : 'foo', age : 30, gender : 'male'}

② 객체 리터럴 방식 이용

- 리터럴 : 표기법

- 객체 리터럴 : 객체를 생성하는 표기법을 의미, 중괄호를 이용해서 객체를 생성

=> {"프로퍼티 이름" : "프로퍼티 값"}

=> 이 때, 프로퍼티 이름에는 문자열 또는 숫자가 올수 있다.

var foo = {name : "foo", age : 30, gender : "male"};

console.log(typeof foo); //object
console.log(foo); //{name : 'foo', age : 30, gender : 'male'}

 

③ 생성자 함수 이용

=> 4장에서 다룸 (추후에 url 추가 예정)

 

[2] 객체 프로퍼티 읽기/쓰기/갱신

- 객체 프로퍼티 접근 방법 : 대괄호 표기법, 마침표 표기법

var foo = {name : 'ella', major : 'science'};

//읽기
console.log(foo.name); //ella
console.log(foo['name']); //ella
console.log(foo.nickname); //undefined

//수정
foo.major = 'math';
console.log(foo.major); //math
console.log(foo['major']); //math

//동적 생성
foo.age = 24;
console.log(foo.age); //24

+ 대괄호 표기법만 사용해야 하는 경우 : 프로퍼티 이름이 표현식이거나 예약어일 경우

foo['full-name'] = 'Ella M';

console.log(foo['full-name']); //'Ella M'
console.log(foo.full-name); // NaN (에러 발생)
console.log(foo.full); // undefined

 

[3] for문을 이용한 객체 프로퍼티 출력

: for문을 통해 객체에 포함된 모든 프로퍼티를 출력할 수 있다

var foo = {name : 'ella', major : 'science', age : 24};

var prop;
for (prop in foo){
    console.log(prop,foo[prop]);
}
//name ella
//major science
//age 24

 

[4] 객체 프로퍼티 삭제

- delete 사용 : 이 때, delete는 객체의 프로퍼티만 삭제 가능하고, 객체는 삭제할 수 없다.

var foo = {name : 'ella', major : 'science', age : 24};

console.log(foo.name); //ella
delete foo.name;
console.log(foo.name); //undefined