본문 바로가기
내일배움 정리/JS 문법 공부

형변환, 숫자의 진법변환

by GREEN나무 2024. 12. 3.
728x90

JavaScript에서 형변환(Type Conversion)은 데이터 타입을 변경하는 과정을 의미합니다. 형변환은 명시적(Explicit)으로 직접 수행하거나, 암시적(Implicit)으로 자동으로 발생할 수 있습니다.

   Tip

  1. 암시적 형변환은 예기치 않은 버그를 유발할 수 있으므로 명시적 형변환을 사용하는 것이 좋습니다.
  2. Object 같은 복잡한 타입의 변환은 직접 테스트해 보는 것이 가장 확실합니다.

 


1. 명시적 형변환 (Explicit Type Conversion)

1.1 숫자로 변환

1.1.1 Number()

  • 값을 숫자로 변환.
console.log(Number("123")); // 123
console.log(Number("123.45")); // 123.45
console.log(Number("abc")); // NaN
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN

1.1.2 parseInt()

  • 문자열을 정수로 변환하며, 첫 번째 숫자만 파싱.
  • 진수 변화 : 다른 진수에서 10진수로 변환합니다.
  • 10진법을 제외한 모든 수는 js에서 문자열타입을 가집니다.
console.log(parseInt("123abc")); // 123
console.log(parseInt("1010", 2)); // 10 (2진수 -> 10진수)

1.1.3 parseFloat()

  • 문자열을 부동소수점 숫자로 변환.
console.log(parseFloat("123.45abc")); // 123.45
console.log(parseFloat("123")); // 123

1.1.4 단항 + 연산자

  • 값을 숫자로 변환.
console.log(+"123"); // 123
console.log(+true); // 1
console.log(+false); // 0
console.log(+"abc"); // NaN

1.2 문자열로 변환

1.2.1 String()

  • 값을 문자열로 변환.
console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"

1.2.2 toString()

  • 숫자나 객체에서 호출해 문자열로 변환.
  • 진수변화 : 10진수 → 다른 진수
  • 10진법을 제외한 모든 수는 js에서 문자열타입을 가집니다.
console.log((123).toString()); // "123"
console.log((true).toString()); // "true"

const decimalNumber = 83;
const octal = decimalNumber.toString(8); // 10진수83을 8진수로 변환
console.log(octal); // "123"

1.3 불리언으로 변환

1.3.1 Boolean()

  • 값을 불리언으로 변환.
  • Falsy 값: false, 0, -0, 0n, "", null, undefined, NaN → false
  • 그 외 → true
console.log(Boolean(123)); // true
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean("Hello")); // true
console.log(Boolean(undefined)); // false

2. 암시적 형변환 (Implicit Type Conversion)

JavaScript는 문맥에 따라 자동으로 형변환을 수행합니다.

2.1 문자열로의 변환

  • 문자열이 포함된 연산에서 발생.
console.log(123 + "abc"); // "123abc" (숫자 -> 문자열)
console.log(true + " is true"); // "true is true"

2.2 숫자로의 변환

  • 산술 연산에서 문자열이 숫자로 변환.
console.log("123" - 10); // 113 (문자열 -> 숫자)
console.log("123" * 2); // 246
console.log("abc" / 2); // NaN

2.3 불리언으로의 변환

  • 조건문 등에서 발생.
if ("Hello") console.log("Truthy"); // "Truthy"
if (0) console.log("Falsy"); // 실행 안 됨

3. 형변환 표

값 숫자로 (Number()) 문자열로 (String()) 불리언으로 (Boolean())

123 123 "123" true
"123" 123 "123" true
"abc" NaN "abc" true
true 1 "true" true
false 0 "false" false
null 0 "null" false
undefined NaN "undefined" false
"" (빈 문자열) 0 "" false

 

문자열  → 배열

 

split() : 문자열을 배열로 변환

let array = string.split(separator);

 

 

배열  → 문자열

 join()  : 배열을 문자열로 변환

let string = array.join(separator);

 

배열 ↔ 문자열 : https://ashen99.tistory.com/365