자바스크립트참조 데이터 타입

JavaScript에서 데이터는 기본 데이터 타입과 참조 데이터 타입으로 나누어집니다. 기본 데이터 타입은 숫자, 문자열, 불리언 등이 포함되며, 참조 데이터 타입은 객체, 배열, 함수 등이 포함됩니다. 이번 블로그에서는 JavaScript의 참조 데이터 타입에 대해 알아보겠습니다.

객체 (Objects)

JavaScript에서 객체는 여러 속성(key-value pairs)을 가지는 데이터 타입입니다. 객체는 중괄호({})를 사용하여 생성하며, 속성은 속성명과 해당 값으로 구성됩니다. 속성 값으로는 숫자, 문자열, 불리언, 배열, 함수 등 다양한 데이터 타입이 사용될 수 있습니다.

const person = {
  name: "John",
  age: 25,
  isStudent: true,
  hobbies: ["coding", "reading", "playing guitar"],
  greet: function() {
    console.log("Hello, I'm " + this.name);
  }
};

위의 예제에서 person 객체는 이름(name), 나이(age), 학생 여부(isStudent), 취미(hobbies), 인사(greet)와 같은 속성을 갖고 있습니다. greet 속성에는 함수가 할당되어 있으며, 객체 내부에서 this 키워드를 이용하여 객체의 속성에 접근할 수 있습니다.

배열 (Arrays)

배열은 여러 개의 값을 순서대로 저장하는 데이터 타입입니다. JavaScript에서 배열은 대괄호([])를 사용하여 생성하며, 각 값은 콤마로 구분됩니다.

const numbers = [1, 2, 3, 4, 5];
const fruits = ["apple", "banana", "orange"];

위의 예제에서 numbers 배열은 1부터 5까지의 숫자를, fruits 배열은 과일 이름을 요소로 갖고 있습니다. 배열은 인덱스를 사용하여 각 요소에 접근할 수 있으며, 인덱스는 0부터 시작합니다.

함수 (Functions)

JavaScript에서 함수는 재사용 가능한 코드 조각을 정의하는 데 사용되는 데이터 타입입니다. 함수는 function 키워드를 사용하여 정의되며, 필요한 경우 매개변수를 받을 수 있습니다. 함수는 결과값을 반환할 수도 있고, 반환하지 않을 수도 있습니다.

function addNumbers(a, b) {
  return a + b;
}

const result = addNumbers(10, 5);
console.log(result); // 15

위의 예제에서 addNumbers 함수는 두 개의 매개변수 ab를 받아서 덧셈을 수행하고 결과값을 반환합니다. 이후에 addNumbers 함수를 호출하고 반환된 결과값을 result 변수에 할당하여 출력하였습니다.

주요 메서드 (Methods)

JavaScript의 참조 데이터 타입에는 여러 가지 유용한 메서드들이 내장되어 있습니다. 객체의 경우 Object.keys, Object.values, Object.entries와 같은 메서드를 사용하여 객체의 속성들을 순회하거나, 배열의 경우 map, filter, reduce와 같은 메서드를 사용하여 배열을 조작할 수 있습니다.

const person = {
  name: "John",
  age: 25,
  isStudent: true,
};

const keys = Object.keys(person);
console.log(keys); // ["name", "age", "isStudent"]

const values = Object.values(person);
console.log(values); // ["John", 25, true]

위의 예제에서 Object.keys 메서드는 객체의 속성명들을 배열로 반환하고, Object.values 메서드는 객체의 속성 값들을 배열로 반환합니다.

JavaScript의 참조 데이터 타입은 다양한 기능과 유연성을 제공하여 다양한 데이터를 다루기에 매우 유용합니다. 명시적으로 정의된 데이터 타입을 사용하면 데이터의 의도를 명확히 표현할 수 있고, 필요한 경우 메서드를 사용하여 데이터를 가공하거나 조작할 수도 있습니다.