JavaScript에서 변수가 배열인지 확인하는 방법 🧐

JavaScript에서 개발자의 기본적인 작업 중 하나는 주어진 변수의 유형을 결정하는 것입니다. 배열은 언어의 핵심 데이터 구조로, 단순한 데이터 저장부터 복잡한 알고리즘까지 다양한 연산에 자주 사용되기 때문에 배열을 다룰 때 특히 중요합니다. 그러나 배열을 객체의 한 유형으로 취급하는 JavaScript의 특성상 배열을 올바르게 식별하는 것이 항상 간단한 것은 아닙니다.

이 글에서는 JavaScript에서 주어진 변수가 배열인지 아닌지 확인하는 3가지 방법을 설명합니다.

JavaScript의 변수 이해 🔍

배열에 대해 자세히 알아보기 전에 JavaScript의 변수에 대해 간단히 살펴보겠습니다. JavaScript는 동적 타입 언어이므로 변수는 명시적으로 선언하지 않고도 모든 유형의 데이터를 저장할 수 있습니다. 이러한 유연성은 훌륭하지만, 특히 변수의 유형을 결정할 때 혼란을 초래할 수 있습니다.

배열(Array) 딜레마 🤔

배열은 값의 목록을 저장하는 데 사용되는 JavaScript의 기본 데이터 구조입니다. 하지만 변수가 실제로 배열인지 어떻게 알 수 있을까요? 여기서 JavaScript가 우리에게 커브볼을 던집니다. JavaScript의 배열은 엄밀히 말해 객체이기 때문에 기존의 타입 검사 방법이 예상대로 작동하지 않을 수 있습니다.

자세히 알아보기 🏊‍♂️

1. Array.isArray() 사용⭐

변수가 배열인지 확인하는 가장 안정적이고 간단한 방법은 Array.isArray() 메서드를 사용하는 것입니다. ECMAScript 5에 도입된 이 메서드는 변수가 배열이면 true을 반환하고, 그렇지 않으면 false을 반환합니다. 다음과 같이 간단합니다

1
2
3
4
5
let fruits = ['apple', 'banana', 'cherry'];
console.log(Array.isArray(fruits)); // Output: true

let number = 42;
console.log(Array.isArray(number)); // Output: false

2. instanceof 연산자 🛠️

배열을 확인하는 또 다른 방법은 instanceof 연산자를 사용하는 것입니다. 이 연산자는 객체가 특정 클래스 또는 생성자 함수의 인스턴스인지 여부를 확인합니다. 배열의 경우 다음과 같이 사용할 수 있습니다:

1
2
let vegetables = ['carrot', 'potato', 'onion'];
console.log(vegetables instanceof Array); // Output: true

하지만 한 가지 문제가 있습니다. instanceof 연산자는 특정 시나리오에서 예상대로 작동하지 않을 수 있으며, 특히 iframe과 같은 다른 실행 컨텍스트를 다룰 때 더욱 그렇습니다.

3. constructor 속성 🏗️

JavaScript의 모든 배열에는 Array 함수를 가리키는 constructor 속성이 있습니다. 이를 사용하여 변수가 배열인지 확인할 수 있습니다.

1
2
let colors = ['red', 'green', 'blue'];
console.log(colors.constructor === Array); // Output: true

이 방법은 덜 일반적이며 특히 constructor 속성이 변경된 경우 약간 까다로울 수 있습니다.

올바른 메서드 선택하기 🧭

변수가 배열인지 확인하는 데 사용할 메서드를 결정할 때는 코드의 컨텍스트를 고려하세요.

  • 일반 사용: 정확성을 보장하는 Array.isArray()를 대부분의 상황에서 선택해야 합니다.
  • 특정 컨텍스트: 일관된 단일 실행 컨텍스트에서 작업하고 있고 객체의 프로토타입 체인이 확실하다면 instanceof를 사용하세요.
  • 제어 환경: constructor 속성 검사는 객체를 완전히 제어할 수 있고 constructor가 변조되지 않았다고 확신하는 시나리오에서 사용할 수 있습니다.

결론 🎉

JavaScript에서 변수가 배열인지 확인하는 것은 개발자의 툴킷에서 핵심적인 기술입니다. 각 메서드에는 고유한 사용 사례가 있으며 Array.isArray(), instanceof 또는 constructor 속성을 언제 사용해야 하는지 알면 코드를 더욱 강력하고 오류 없이 만들 수 있습니다.

Share