728x90
728x90

암시적 형변환

javascript에서 연산자를 사용할 때 자동으로 수행되는 형변환

피연산자의 타입에 따라 결과가 다를 수 있음

주로 숫자와 문자열간 논리 연산자 사용 시 발생

 

1. 숫자와 문자 간의 암시적 형변환

var num = 42;        // 숫자 타입 변수
var str = "10";      // 문자열 타입 변수

var result = num + str;
console.log(result); // "4210" (문자열로 형변환 후 연결)

숫자 42 + 문자열 "10"이 더해진다. 

자바스크립트는 숫자와 문자열을 더할 때 숫자를 문자열로 암시적 변환하여 두 문자열을 연결한다

따라서 result 변수의 값은 "4210"이 된다

 

2. 논리 연산자를 사용할 때의 암시적 형변환

 

var num = 10;         // 숫자 타입 변수

var result1 = num || 0;
console.log(result1); // 10 (참 값인 첫 번째 피연산자 반환)

var result2 = "" && num;
console.log(result2); // "" (거짓 값인 첫 번째 피연산자 반환)

||연산자 : 첫 번째 피연산자가 참이면 해당 값을 반환하고, 거짓이면 두 번째 피연산자를 반환

&&연산자 : 첫번째 피연산자가 거짓이면 해당 값을 반환하고, 참이면 두번째 피연산자 반환

Result1 변수의 값은 10, result2변수의 값은 "" (빈 문자열)

 

3. 불리언 변환

 

var value = "Hello";      // 문자열 타입 변수

if (value) {
  console.log("Value is truthy");    // 실행됨
} else {
  console.log("Value is falsy");
}

 

변수 value에는 문자열이 할당되어 있음

if문에서 value를 조건으로 사용하면 javascript는 value를 불리언으로 암시적 변환

문자열은 비어있지 않음- 불리언으로 변환하면 true

그래서 조건문은 참이 되고 truthy가 출력

 

명시적 형변환

 

개발자가 일부러 형변환시킴

 

 

1. 문자열 변환

 

String() 함수 사용

var num = 42;           // 숫자 타입 변수
var str = String(num);  // 숫자를 문자열로 변환

console.log(str);       // "42" (문자열로 변환된 값)

toString()메서드 사용

var bool = true;              // 불리언 타입 변수
var str = bool.toString();    // 불리언을 문자열로 변환

console.log(str);             // "true" (문자열로 변환된 값)

 

연결 연산자(+) 사용:

var num = 10;             // 숫자 타입 변수
var str = num + "";       // 빈 문자열과의 연결을 통해 문자열로 변환

console.log(str);         // "10" (문자열로 변환된 값)

 

2. 숫자 변환

 

Number() 함수 사용

var str = "42";            // 문자열 타입 변수
var num = Number(str);     // 문자열을 숫자로 변환

console.log(num);          // 42 (숫자로 변환된 값)

 

parseInt() 함수 사용

var str = "123.45";              // 문자열 타입 변수
var num = parseInt(str);         // 정수로 변환

console.log(num);                // 123 (숫자로 변환된 값)

 

parseFloat() 함수 사용

var str = "3.14";                // 문자열 타입 변수
var num = parseFloat(str);       // 부동 소수점 수로 변환

console.log(num);                // 3.14 (숫자로 변환된 값)
300x250

+ Recent posts