[Javascript] 형 변환

CloudCoke
|2022. 11. 3. 15:38

형 변환

  • NaN : Not a Number
  • NaN은 다른 모든 값과 비교 했을 때에도 같지 않고, 다른 NaN과도 같지 않다.
let string = "ryzen";
let num = 9;
let bool = true;

// 숫자형으로 형 변환
console.log(Number(string)); // NaN
console.log(Number(bool)); // 1

// 문자열로 형 변환
console.log(String(num)) // 9
console.log(String(bool)) // true

// 불린형으로 형 변환
console.log(Boolean(string)) // true
console.log(Boolean(num)) // true

변수들을 형 변환해 출력한 결과

자동 형 변환

+ 연산 시 자동 형 변환

  • + 연산은 문자열을 연결하는 기능이 강함
  • 문자열 + 문자열을 제외한 데이터 타입 ⇒ 문자열로 형 변환 후 + 연산
  • 문자열을 제외한 데이터 타입 + 문자열을 제외한 데이터 타입 ⇒ 숫자형으로 형 변환 후 + 연산
  • NaN+ 연산을 하면 NaN 이 나옴
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string + num); // ryzen + 9 => ryzen9
console.log(string + bool); // ryzen + true => ryzentrue
console.log(num + bool); // 9 + 1 => 10

변수들을 + 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 + 연산");
console.log(NaN + string); // NaN + ryzen => NaNryzen
console.log(NaN + num); // NaN + 9 => NaN
console.log(NaN + bool); // NaN + 1 => NaN

변수들을 NaN과 + 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 + 연산");
console.log(undefined + string); // undefined + ryzen => undefinedryzen
console.log(undefined + num); // NaN + 9 => NaN 
console.log(undefined + bool); // NaN + 1 => NaN

변수들을 undefined와 + 연산한 결

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 + 연산");
console.log(null + string); // null + ryzen => nullryzen
console.log(null + num); // 0 + 9 => 9
console.log(null + bool); // 0 + 1 => 1

변수들을 null과 + 연산

- * / % **연산 시 자동 형 변환

  • 연산 되는 두 값을 모두 숫자형으로 변환한 후 연산
  • NaN- * / % **연산을 하면 NaN이 나옴

- 연산 시 자동 형 변환

// - 연산 
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string - num); // NaN - 9 => NaN
console.log(string - bool); // NaN - 1 => NaN
console.log(num - bool); // 9 - 1 => 8

변수들을 - 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 - 연산");
console.log(NaN - string); // NaN - NaN => NaN
console.log(NaN - num); // NaN - 9 => NaN
console.log(NaN - bool); // NaN - 1 => NaN

변수들을 NaN과 - 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 - 연산");
console.log(undefined - string); // NaN - NaN => NaN
console.log(undefined - num); // NaN - 9 => NaN 
console.log(undefined - bool); // NaN - 1 => NaN

변수들을 undefined와 - 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 - 연산");
console.log(null - string); // 0 - NaN => NaN
console.log(null - num); // 0 - 9 => -9
console.log(null - bool); // 0 - 1 => -1

변수들을 null과 - 연산한 결과

* 연산 시 자동 형 변환

// * 연산
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string * num); // NaN * 9 => NaN
console.log(string * bool); // NaN * 1 => NaN
console.log(num * bool); // 9 * 1 => 9

변수들을 * 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 * 연산");
console.log(NaN * string); // NaN * NaN => NaN
console.log(NaN * num); // NaN * 9 => NaN
console.log(NaN * bool); // NaN * 1 => NaN

변수들을 NaN과 * 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 * 연산");
console.log(undefined * string); // NaN * NaN => NaN
console.log(undefined * num); // NaN * 9 => NaN 
console.log(undefined * bool); // NaN * 1 => NaN

변수들을 undefined와 * 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 * 연산");
console.log(null * string); // 0 * NaN => NaN
console.log(null * num); // 0 * 9 => 0
console.log(null * bool); // 0 * 1 => 0

변수들을 null과 * 연산한 결과

/ 연산 시 자동 형 변환

// / 연산
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string / num); // NaN / 9 => NaN
console.log(string / bool); // NaN / 1 => NaN
console.log(num / bool); // 9 / 1 => 9

변수들을 / 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 / 연산");
console.log(NaN / string); // NaN / NaN => NaN
console.log(NaN / num); // NaN / 9 => NaN
console.log(NaN / bool); // NaN / 1 => NaN

변수들을 NaN과 / 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 / 연산");
console.log(undefined / string); // NaN / NaN => NaN
console.log(undefined / num); // NaN / 9 => NaN 
console.log(undefined / bool); // NaN / 1 => NaN

변수들을 undefined와 / 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 / 연산");
console.log(null / string); // 0 / NaN => NaN
console.log(null / num); // 0 / 9 => 0
console.log(null / bool); // 0 / 1 => 0

변수들을 null과 / 연산한 결과

% 연산 시 자동 형 변환

// % 연산
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string % num); // NaN % 9 => NaN
console.log(string % bool); // NaN % 1 => NaN
console.log(num % bool); // 9 % 1 => 0

변수들을 % 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 % 연산");
console.log(NaN % string); // NaN % NaN => NaN
console.log(NaN % num); // NaN % 9 => NaN
console.log(NaN % bool); // NaN % 1 => NaN

변수들을 NaN과 % 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 % 연산");
console.log(undefined % string); // NaN % NaN => NaN
console.log(undefined % num); // NaN % 9 => NaN 
console.log(undefined % bool); // NaN % 1 => NaN

변수들을 undefined와 % 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 % 연산");
console.log(null % string); // 0 % NaN => NaN
console.log(null % num); // 0 % 9 => 0
console.log(null % bool); // 0 % 1 => 0

변수들을 null과 % 연산한 결과

** 연산 시 자동 형 변환

// % 연산
let string = "ryzen";
let num = 9;
let bool = true;

console.log(string ** num); // NaN ** 9 => NaN
console.log(string ** bool); // NaN ** 1 => NaN
console.log(num ** bool); // 9 ** 1 => 9

변수들을 ** 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("NaN과 ** 연산");
console.log(NaN ** string); // NaN ** NaN => NaN
console.log(NaN ** num); // NaN ** 9 => NaN
console.log(NaN ** bool); // NaN ** 1 => NaN

변수들을 NaN과 ** 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("undefined와 ** 연산");
console.log(undefined ** string); // NaN ** NaN => NaN
console.log(undefined ** num); // NaN ** 9 => NaN 
console.log(undefined ** bool); // NaN ** 1 => NaN

변수들을 undefined와 ** 연산한 결과

let string = "ryzen";
let num = 9;
let bool = true;

console.log("null과 ** 연산");
console.log(null ** string); // 0 ** NaN => NaN
console.log(null ** num); // 0 ** 9 => 0
console.log(null ** bool); // 0 ** 1 => 0

변수들을 null과 ** 연산한 결과

비교 연산 시 자동 형 변환

관계 비교 연산 시 자동 형 변환

  • < <= > >= 연산 시 자동 형 변환
  • 특별한 경우를 제외하면 두 값 모두 숫자형으로 변환 후 연산
console.log(1 < "2") // 1 < 2 => true
console.log(2 <= true) // 2 <= 1 => false
console.log("3" > false) // 3 > 0 => true
console.log("four" >= 1) // NaN >= 1 => false

관계 비교 연산을 한 결과

같음 비교 연산 시 자동 형 변환

  • === !== == != 연산 시 자동 형 변환
  • **일치 비교(=== !==)**는 형 변환이 일어나지 않음
  • **동등 비교(== !=)**는 숫자형으로 형 변환이 일어남
// 일치 비교 (값과 타입까지 비교)
console.log(1 === 1) // 1 === 1 => true
console.log(1 === "1") // 1 === "1" => false
console.log(1 === true) // 1 === true => false
console.log(true === "1") // true === "1" => false

일치 비교 연산시 결과

// 동등 비교 (값만 비교)
console.log(1 == "1"); // 1 == 1 => true
console.log(1 == true); // 1 == 1 => true
console.log(true == "1"); // 1 == 1 => true
console.log("true" == 1); // NaN == 1 => false

동등 비교 연산시 결과

 

'Javascript' 카테고리의 다른 글

[Javascript] 객체  (0) 2022.11.04
[Javascript] 피보나치 수열 - 알고리즘  (0) 2022.11.03
[Javascript] 다양한 함수 선언 방법  (0) 2022.11.02
[Javascript] 함수  (0) 2022.11.01
[Javascript] 변수와 상수  (0) 2022.10.31