1. 객체타입 (Object Types)

객체타입의 특징은

  1. 원시 타입은 값을 변경할 수 없는 것이 반하여 객체 타입은 값을 변경될 수 있습니다. 변수 안에 저장되는 것은 원시 타입이나 객체 타입이나 모두 실제 값의 주소값 입니다. (앞에서처럼 화살표를 통해 설명드리도록 하겠습니다.)

  2. 다른 책이나 강의에서 call by reference나 call by value로 구분하여 참조타입과 원시타입을 설명하는 경우도 있는데 이렇게 말하는 것은 적당치 않습니다. JavaScript는 call by value만 존재하기 때문입니다. (잘 정리된 글이 있어 블로그 링크를 하단에 첨부합니다. 초급자 과정에서는 더 깊게 설명하진 않습니다.)

    [JS] 📚 Call by Value & Call by Reference (+ Call by Sharing)

let arr1 = [1, 2, 3];
let arr2 = arr1; // 여기서 arr1과 arr2는 같은 [1, 2, 3]을 가리킵니다.
console.log(arr2);

arr1[0] = 10;
// arr1 = [10, 20];
console.log(arr2);

// 비교해보세요. 화살표가 어떻게 바뀌는지도 그려보세요.
let value1 = 10;
let value2 = value1;
console.log(value2);

value1 = 20;
console.log(value2);

1. 배열 (Array)

배열(Array)은 데이터를 순서대로 저장하는 객체입니다. 하나의 데이터를 표현하는 원시타입과 달리 여러개의 데이터를 한 변수에 저장할 수 있기 때문에 데이터를 추가하거나, 제거, 정렬, 검색 등 다양한 작업을 수행할 수 있도록 여러가지 메소드를 제공합니다.

1.1 배열의 특징

  1. 배열은 빈 배열로 생성하거나 요소가 포함된 배열로 생성할 수 있습니다.

    const arr = [];
    const arr = [1, 2, 3];
    const arr2 = new Array(4, 5, 6);
    const arr2 = new Array(3);
    
  2. 배열은 숫자를 사용하여 값에 접근할 수 있습니다. 이때 숫자는 값의 순서를 의미하며, 이 순서를 인덱스(index), 그리고 배열안에 존재하는 값을 원소(elements)라고 부릅니다. 심지어 존재하지 않는 원소에도 접근이 가능합니다.

    const arr = [1, 2, 3];
    // 배열 안의 원소에 접근하기 위해서는 인덱스 번호를 이용합니다. 
    console.log(arr[0]); // 1
    console.log(arr[1]); // 2
    console.log(arr[2]); // 3
    console.log(arr[3]); // ??
    
  3. 배열은 가지고 있는 원소의 길이를 나타내는 length 프로퍼티를 가지고 있습니다. (문자열에서도 사용했었죠?)

    const myArray = [1, 2, 3, 4, 5];
    console.log(myArray.length); // 5
    
  4. 배열은 배열 안에 다른 배열을 포함할 수 있습니다. 이러한 배열을 다차원 배열이라고 합니다.

    const arr2 = [
      [1, 2],
      [3, 4],
      [5, 6]
    ];
    console.log(arr2[0][0]);
    console.log(arr2[2][1]);
    

    arr2 배열은 배열안에 세개의 배열을 원소로 가지고 있습니다. 이러한 배열을 3차원 배열이라고 합니다.

    const arr3 = [
      [
        [1, 2],
        [3, 4]
      ],
      [
        [5, 6],
        [7, 8]
      ]
    ];
    console.log(arr[0][1][0]);
    console.log(arr[1][0][1]);
    

    위와 같은 코드로 배열안의 배열안의 배열인 4차원 배열도 만들어 볼 수 있습니다.

1.2 배열의 메소드

  1. push()와 pop()

push() 메소드는 배열의 끝에 요소를 추가하고 길이를 반환합니다, pop() 메소드는 배열의 마지막 요소를 꺼내어 반환합니다. 꺼낸 요소는 배열에서 제외됩니다.

const arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [1, 2, 3, 4]
arr.pop();
console.log(arr); // [1, 2, 3]