자바스크립트

자바스크립트 데이터 타입

minkang 2021. 6. 24. 01:10

자바스크립트는 느슨한 타입 체크 언어이다.

  • 기본 타입
    • 숫자
    • 문자열
    • 불린값
    • null
    • undefined
  • 참조 타입
    • 객체

1. 기본 타입

1) 숫자

모든 숫자를 64비트 부동 소수점 형태로 저장한다.

따라서 정수형이 따로없고, 모든 숫자를 실수형으로 처리한다.

 

var num = 5 / 2;  // 2.5

정수 부분만 구하려면 Math.floor() 자바스크립트 메서드를 사용하면 된다.

 

2) 문자열

한 번 정의된 문자열은 변하지 않는다.

var str = 'hi~';
str[0] = 'T';
console.log(str); // 'hi~'

 

3) 불린값

true, false 값을 나타내는 불린 타입을 가진다.

 

4) null과 undefined

값이 할당 되지 않은 변수는 undefined 타입이며, undefined 타입의 변수는 값 또한 undefined이다.

undefined는 타입이자, 값을 나타낸다.

 

null 값을 가진 변수는 타입이 null이 아니라 object이다.

 

2. 참조 타입

자바스크립트에서 객체는 단순히 key:value 형태의 프로퍼티들을 저장하는 컨테이너이다.

객체의 프로퍼티는 기본 타입, 다른 객체, 함수를 포함할 수 있다.

함수를 포함하는 프로퍼티를 메서드라고 부른다.

 

  • 객체 생성
    • Object()
    • 객체 리터럴
    • 생성자 함수

1) Object() 생성자 함수 이용

var person = new Object();

person.name = 'min';
person.age = 27;

console.log(typeof person)	// object
console.log(person)		// { name : 'min', age: 27 }

new Object()로 빈 객체를 생성한 후 name, age 프로퍼티를 추가했다.

 

2) 객체 리터럴 방식

객체 리터럴이란 객체를 생성하는 표기법을 의미한다.

var person = {
	name : 'min',
    age : 27
};

console.log(typeof person)	// object
console.log(person)		// { name : 'min', age: 27 }

객체 리터럴은 중괄호 {} 를 이용해서 객체를 생성하고, 중괄호 안에 "프로퍼티 이름 : 프로퍼티 값" 형태로 표기한다.

프로퍼티 값이 함수일 경우 이러한 프로퍼티를 메서드라고 부른다.

 

3) 생성자 함수 이용

var obj = Function add('x', 'y', 'return x + y');
console.log(add(3, 4)); // 7

일반적으로 Function() 생성자 함수는 잘 사용되지 않는다.

 

 

3. 객체 프로퍼티

1) 객체 접근법

  • 대괄호([]) 표기법
  • 마침표(.) 표기법

대괄호 표기법을 사용해야 하는 경우 : 표현식이거나 예약어일 경우

'full-name' 프로퍼티의 경우 '-'연산자가 있는 표현식이다. 이 경우에는 대괄호 표기법만을 이용해서 foo['full-name']형태로 프로퍼티에 접근해야 한다.

foo['full-name'] = 'foo bar';

 

2) 객체 프로퍼티 삭제

delete 연산자는 객체의 프로퍼티를 삭제할 뿐, 객체 자체를 삭제하지 못한다.

 

4. 참조 타입의 특성

객체의 모든 연산은 실제 값이 아닌 참조값으로 처리된다.

var objA = {
	var : 40
};
var objB = objA;

objA 변수는 객체 자체를 저장하고 있는 것이 아니라 생성된 객체를 가리키는 참조값을 저장하고 있다.

 

1) 객체 비교

동등 연산자(==)를 사용하여도 객체의 프로퍼티 값이 아닌 참조값을 비교한다.

var objA = { value: 100 };
var objB = { value: 100 };
var objC = objB;

console.log(objA == objB); // false
console.log(objB == objC); // true
console.log(objA === objB); // false
console.log(objB === objC); // true

 

2) 참조에 의한 함수 호출 방식

함수 호출에서 기본 타입의 경우 Call by value 방식, 참조 타입의 경우 Call by Reference 방식으로 동작한다.

인자로 넘긴 객체의 참조값이 그대로 함수 내부로 전달되어 참조값을 이용해서 실제 객체의 값을 변경할 수 있다.

 

 

 

참고 : 인사이드 자바스크립트 책