Kim-Baek 개발자 이야기

JavaScript Data Type (자바스크립트 데이터 타입) 본문

개발/JavaScript

JavaScript Data Type (자바스크립트 데이터 타입)

킴백 개발자 2020. 10. 1. 11:09

Data Type

  • 자바스크립트는 크게 2가지의 데이터 타입으로 나뉜다. (기본타입 / 참조타입)

 

1. 기본 타입

 - Number

 - String

 - Boolean

 - Undefined

 - Null

 

자바스크립트의 기본 타입은 그 자체가 하나의 값을 나타내는 것이다.

 

 var num = 10;
 var str = "jeahyun";
 var flag = true;
 var empty;
 var val = null;

 typeof num    // number
 typeof str    // string
 typeof flag   // boolean
 typeof empty  // undefined
 typeof val    // object

typeof 는 피연산자의 타입을 리턴해준다.

 

 

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

 var num = 3/2;

 // 1.5가 출력된다. C나 JAVA의 경우 1이 출력된다.
 console.log(num);

 

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

var str = "jeahyun";
str[0] = "t";

// jeahyun이 출력된다.
console.log(str);

 

  • null과 undefined는 둘다 값이 비어있음을 의미한다.
  • 기본 적으로 값이 할당되지 않으면 undefined 타입이며, undefined 타입의 변수는 값 또한 undefined이다.
  •  undefined는 타입이자 값을 나타낸다.
  • null의 경우 typeof 결과가 null이 아닌 object이다.
var val;
console.log(typeof val === null);    //false
console.log(val === null);           //true

null 체크할 때 주로 === 연산자를 이용한다.

 

 

2. 참조 타입 (객체)

 - Array

 - Object

 - 정규 표현식

 

  • 기본 타입을 제외한 모든 값(배열, 함수, 정규표현식 등)은 모두 객체이다.

 

  • 자바스크립트의 객체는 key : value 페어의 형태로 해쉬 자료구조로 생각하면 된다.

 

  • 객체의 프로퍼티는 기본 타입의 값을 가질 수도 있고 다른 참조 타입(객체)를 가질 수도 있다.

객체의 프로퍼티로 함수를 가지고 있다면 그 프로퍼티를 메소드라 부른다.

 

객체 생성 방법

  1. Object() 객체 생성자 함수를 이용한다.
  2. 객체 리터럴을 이용한다.
  3. 생성자 함수를 이용한다.

 

// 1. Object() 객체 생성자 함수를 이용
var obj = new Object();
obj['full-name'] = "kimjeahyun";
obj.name = "jeahyun";
obj.age = "26";

// 2. 객체 리터럴을 이용한다.
var obj2 = {
  name: 'chicken',
  type: 'food'
};

console.log(typeof obj); // object
console.log(obj[name]);  // jeahyun
console.log(obj2.name);  // chichen

delete obj.age;

객체의 프로포티를 읽기 위해서는 대괄호([]), 또는 마침표(.)를 이용해서 읽는다.

단 마침표를 이용해 읽을 때는 접근하려는 프로퍼티가 예약어 or 표현식일 경우이다.

delete 연산자를 이용해 객체의 프로퍼티를 삭제할 수 있다. 단 객체 자체를 삭제할 수는 없다.

 

 

참조 타입은 실제 값이 아닌 참조 값으로 처리한다.

 

  var obj1 = {
    num: 10
  };
  var obj2 = obj1;

  console.log(obj1.num);  //10
  console.log(obj2.num);  //10

  obj2.num = 20;
  console.log(obj1.num);  //20
  console.log(obj2.num);  //20

  var obj3 = {
    num: 20
  };
  console.log(obj1 == obj2);  // true
  console.log(obj1.num == obj3.num);  // true
  console.log(obj1 == obj3);  // false

Object를 비교하는 연산은 값이 아니라 참조 값을 비교한다.

기본 타입의 경우는 Call by Value 방식, 참조 타입의 경우는 Call by Reference 방식이다.

 

var num = 10;
var obj = {
  val: 10
};

function myFnc(num, obj){
  num = 20;
  obj.val = 20;
};
myFnc(num, obj);
console.log(num);     //10
console.log(obj.val); //20
반응형
Comments