데이터 타입, 산술연산자, 속성 등

장돌뱅이 ·2022년 1월 2일
0

JavaScript

목록 보기
3/46

data type

자바스크립트에는 7가지 종류의 데이터타입이 있다. 데이터타입은 크게 2가지로 나눌 수 있다.

1. 원시(primitive, 기본) 데이터타입 : 객체가 아닌 데이터 타입

  1. number
  2. string - 작은따옴표''로 둘러싸인 문자 그룹(문자, 숫자, 공백, 기호 등), 큰따옴표 가능
  3. boolean - true, false 두가지 값만 갖는 데이터타입
  4. null - 값이 없음을 의미
  5. undefined - 값이 없음을 의미(null과는 다름)
  6. symbol - 언어에 대한 새로운 기능을 부여. 복잡한 코딩에서 유용하다.
let str = "coding";
console.log(str.length);
console.log(str.charAt("0"));

문자열은 분명 프로퍼티와 메소드가 있다. 그렇다면 객체인데 왜 문자열이 객체가 아니라고 하는가?
여기서 .은 object access operator이다. 즉 . 앞에 있는 것이 객체인 것이다. 그런데 원시 데이터타입인 문자열을 가지고 관련된 어떤 작업을 하려할 때 자바스크립트는 임시로 문자열 객체를 만들고 사용이 끝나면 제거한다. 이러한 처리는 내부적으로 일어난다.


const str = "coding";
str.prop = "abcd"; // 객체가 만들어지고, 만들어지고 나서는 객체를 제거하고 원래의 원시데이터 타입으로 변경
console.log(str.prop); //undefined

문자열을 마치 객체처럼 사용하려고 하면 자바스크립트가 내부적으로 문자열을 객체화 시켜버린다. 그래서 위에서 문자열에 프로퍼티를 저장할 수 있는 것처럼 에러가 발생하지 않는다. 정작 프로퍼티를 가져오려고 하면 undefined가 나온다. 원시 데이터타입을 마치 객체처럼 사용하려고 할 때 자바스크립트 (자동으로) 내부적으로 만들어지는 객체를 wrapper object라고 한다.(레퍼 객체)

null, undefined는 레퍼객체가 존재하지 않는다.

2. 객체(참조) 데이터타입

  1. object - 관련데이터의 컬렉션

3. 복제와 참조

//복제
let a = 1;
let b = a;
b = 2; // 새로운 별개의 데이터를 b에 할당한다. 
console.log(b, a); // 2 1 원시 데이터타입에서 복제된 b는 값이 변경되어도 a에 영향을 주지 않는다.


//참조 
let c = { id: 1 }; // 객체를 생성한다.
let d = c; //  변수 d와 c는 위에서 생성된 객체를 참조한다.
d.id = 2;
console.log(c.id); // 2 d의 프로퍼티 값을 변경하면 c의 프로퍼티 값이 변경된다. 변경된 객체를 참조하기 때문이다. 



let c = { id: 1 }; // 객체를 생성한다.
let d = c;
d = { id: 2 }; // 또 다른 새로운 객체를 생성한다. 
console.log(c.id); // 1
console.log(d.id); // 2 새롭게 만들어진 객체d를 참조한다. 


// 함수에서의 복사와 참조 
const a = 1;
function func(b) {
  b = 2;
}
func(a); // 함수가 실행될 때 b = a
console.log(a); // 1


const c = { id: 1 }; // 객체 생성
function func(d) {
  d = { id: 2 };  // 새로운 객체가 d 에 할당됨, c와 d는 서로 다른 객체를 참조하게 된다.
}
func(c);  // 함수가 실행될 때 d = c
console.log(c.id); // 1


const c = { id: 1 }; // 객체 생성
function func(d) {
  d.id = 2; // c와 d는 같은 객체를 참조하게 된다. c의 id 값도 변경된다. 
}
func(c); // 함수가 실행될 때 d = c
console.log(c.id); // 2

변수에 담겨있는 데이터가 원시형이면 그 안에는 실제 데이터가 들어었고, 객체면 변수 안에는 데이터에 대한 참조 방법이 들어있다고 할 수 있다.


  • Arithmetic Operators(산술연산자)에는
    +, -, *, /(나누기), %(나머지값) 가 있다.

  • String Concatenation(문자열 연결)은
    +를 이용하여 문자열을 연결할 수 있다.

  • typeOf 연산자를 통해 데이터타입 종류를 확인할 수 있다.

  • Properties
    온점(.)과 속성을 붙여 속성정보를 확인할 수 있다.
    .length 문자열의 문자 수(공백 포함)

  • Methods
    메서드는 우리가 수행할 수 있는 행동을 말한다.
    온점(.) + 메서드 이름 + ()괄호를 붙여 적용한다.
    자바스크립트는 다양한 빌트인된 문자열 메서드를 제공한다.(.toUpperCase(), .trim() 등)
    Math.floor(Math.random()) 으로 랜덤 정수를 뽑을 수도 있다.
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String 참조

0개의 댓글

관련 채용 정보