JavaScript/문자열

[JavaScript]문자열인지 확인하는 방법

DevStory 2022. 9. 23.

문자열인지 확인하는 방법

이번 포스팅은 JavaScript에서 변수가 문자열인지 확인하는 몇 가지 방법과 주의사항을 소개합니다.


typeof 연산자

첫 번째 방법으로 JavaScript에서 타입을 확인할 수 있는 typeof 연산자를 사용하여 변수가 문자열인지 확인할 수 있습니다.

 

typeof 연산자는 피연산자의 데이터 유형을 반환하는 기능을 가지고 있으며, JavaScript의 기본 타입과 함수가 아닌 경우 객체로 취급합니다.

 

다음 예제는 typeof 연산자를 사용하여 다양한 데이터 타입을 확인합니다.

const strValue = 'Hello';
const numValue = 100;
const dateValue = new Date();
const array = [1, 2, 3];
const sum = function(a, b) {
  return a + b;
}

console.log(typeof strValue);  // string
console.log(typeof numValue);  // number
console.log(typeof dateValue); // object
console.log(typeof array);     // object
console.log(typeof sum);       // function

typeof 연산자 사용 시 주의사항

typeof 연산자 사용 시 한 가지 주의사항이 있습니다. JavaScript에서 문자열, 불리언, 숫자 타입의 변수는 일반적으로 리터럴 방식으로 값을 할당하지만, new 키워드를 사용하여 값을 할당할 수도 있습니다.

// 리터럴 방식
const numValue1 = 10;
const strValue1 = 'Hello';
const boolValue1 = true;

// new 키워드를 사용하는 방식
const numValue2 = new Number(10);
const strValue2 = new String('Hello');
const boolValue2 = new Boolean('true');

 

JavaScript에서 new 키워드를 사용하여 변수를 생성하는 일이 거의 없지만, new 키워드를 사용하여 문자열 변수를 생성하는 경우 typeof 연산자는 해당 변수의 타입을 object로 취급합니다.

const strValue1 = 'Hello';
const strValue2 = new String('Hello');

console.log(typeof strValue1); // string
console.log(typeof strValue2); // object

 

만약, new 키워드로 생성된 변수의 값이 어떤 데이터 타입인지 확인하고 싶다면, valueOf() 메서드를 호출합니다.

const numValue = new Number(10);
const strValue = new String('Hello');
const boolValue = new Boolean(true);

// valueOf() 메서드를 호출하지 않은 경우
console.log(typeof numValue);  // object 
console.log(typeof strValue);  // object
console.log(typeof boolValue); // object

// valueOf() 메서드를 호출한 경우
console.log(typeof numValue.valueOf());  // number
console.log(typeof strValue.valueOf());  // string
console.log(typeof boolValue.valueOf()); // boolean

 

또 다른 방법으로 instanceof 연산자를 사용하여 new 키워드로 생성된 변수의 타입을 확인할 수 있습니다. instanceof 연산자는 변수가 우측에 입력한 생성자에 의해 생성된 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.

 

다음 예제는 instanceof 연산자를 사용하여 new 키워드로 생성된 변수의 생성자를 확인합니다.

const strValue = new String('Hello');

console.log(strValue instanceof String); // true 
console.log(strValue instanceof Object); // true
console.log(strValue.valueOf() instanceof String); // false
console.log(strValue.valueOf() instanceof Object); // false

JavaScript의 객체는 최상위 객체인 Object와 연결되므로 instanceof 연산자에 Object를 입력한 경우에도 true를 반환합니다. 그리고 valueOf() 메서드의 반환 결과는 JavaScript의 기본 데이터 타입이므로 instanceof 연산자는 false를 반환합니다.

반응형

댓글