본문 바로가기
☁️ 구름 X kakao DeepDive/☁️ HTML CSS JS

[JavaScript] 자바스크립트 (타입, 타입 변환), (연산 및 Math Object)

by 뽀짜꼬 2024. 11. 16.

Data Type in Javascript

자바스크립트 타입

: 크게 두 가지의 타입으로 나뉘어져있다.

  • 원시 타입 : Boolean(T,F), String, Number, null, undefined, Symbol (불변성을 가지고 있다)
    • Call Stack 이라는 곳에 저장이 됨.

              : 고정된 크기로 Call Stack 메모리에 저장, 실제 데이터가 변수에 할당

  • 참조 타입 : Object, Array
    • Heap 이라는 곳에 저장이 됨
      • 객체든, 배열이든 이 주소가 Call Stack에 저장이 된다.
      • → 주소만 가져온다.
      : 데이터 크기가 정해지지 않고 Call Stack 메모리에 저장, 데이터의 값이 heap에 저장되며 변수에 heap 메모리의 주소값이 할당

⇒ enemies 라는 변수를 만들고 여기에 배열을 저장했음

 

💡 기본적으로 JS는 원시 타입에 대한 값을 저장하기 위해 Call Stack 메모리 공간을 사용함.
참조 타입의 경우 Heap이라는 별도의 메모리 공간을 사용함
→ 이 경우 Call Stack은 개체 및 배열 값이 아닌 Heap 메모리 참조 ID를 값으로 저장함

 

Primitive types

Object types

자바스크립트는 동적 타입이다.

JS는 느스한 타입의 동적 언어이다. JS는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당)이 가능하다

let foo = 42 //숫자
foo = 'bar' //인줄 알았지? 문자열이지롱
foo = true //인줄 알았지? 불리언이지롱

변수의 타입은 number겠죠, 그러나 이제 문자열이 됨, 그러나 이제 불리언이 됨

  • 같은 변수가 여러개의 타입을 가질 수 있다
  • 타입을 명시하지 않아도 된다
  • 대부분의 다른 언어는 정적 타입이다. (자바, C#, C++, 타입스크립트)
let foo = 42
foo = 'bar'
foo = true
console.log(typeof foo);

// 원시 타입
// 문자열 String
const name = "han";
// Number
const age = 30;
// Boolean
const hasJob = true;
// null - 소문자로 해줘야함.
const car = null;
// undefined
let anything; //아무것도 할당 안해주면 undefined 할당됨
// Symbol
const sym = Symbol();

// 참조 타입
// Array 배열
const hobbies = ['walking', 'books'];
// Object 객체
const address = {
    province : '경기도',
    city: '성남시'
}

console.log(typeof address);
console.log(typeof hobbies);
//배열도 결국에는 object의 하나의 형태이므로 typeof를 사용할 경우 object를 리턴한다.
//그러면 배열인거 어떻게 체크하는가?
console.log(Array.isArray(hobbies)); // true 출력

JavaScript Type Conversion

JavaScript 변수는 새 변수 및 다른 데이터 유형으로 변환할 수 있다.

  1. JS 함수를 사용하여
  2. JS 자체에 의해 자동으로
  • 함수 사용 예시
let val;

// Number to String
val = String(111);
val = String(8 + 4);

// Boolean to String
val = String(false);

// Date to String
val = String(new Date());

// Array to String
val = String([1, 2, 3, 4, 5]);

// toString()
val = (5).toString();

// String to number
val = Number('1');
val = Number(true); //number로 변경시 1
val = Number(false); //number로 변경시 0
val = Number(null); //number로 변경시 0
val = Number([1,2,3]); //number로 변경시 NaN : Not a Number

// 소수점 아래를 없애고싶다.
val = parseInt('111.40');
// 소수점을 남기고 싶다
val = parseFloat('111.40');

console.log(val);
console.log(typeof val);
console.log(val.length);
  • 자동 예시
const val1 = String(2);
const val2 = 3;
const sum = val1 + val2;

console.log(sum); //23출력
console.log(typeof sum); //타입이 string으로 나옴 => 자동으로 변경이 된것.

자바스크립트 연산 및 Math Object

Math.round(2.4);

: 가장 가까운 정수로 ⇒ 2

Math.ceil(2.4);

: 가장 가까운 숫자로 rounded up 반올림 하는거.

Math.floor(2.4);

: 가장 가까운 숫자로 rounded down 반내림 하는거.