type

JS에는 8가지의 자료형이 존재한다.

원시 자료형

  • 문자 (string)

    • 템플릿 리터럴 : ${...}백틱으로 감싸 문자열 중간에 표현식을 표시하는 방식

      let num = 111;
      alert(`num is ${num}`); //num is 111
    • length : 문자열 길이

      • str.length()가 아닌 str.length이다.

        함수가 아니라 숫자가 저장되는 프로퍼티이기 때문

    • for ... of 문 이용하여 문자에 접근가능

      for (let char of 'hello') {
        alert(char); // h,e,l,l,o
      }
    • 문자열은 수정이 불가능하다.

      let str = 'hi';
      str[0] = 'B'; //error
    • str.toLowerCase(),str.toUpperCase() : 문자열 대소문자 변경

    • str.indexOf(substr,pos) : 부분 문자열 위치 찾기

      str에서 pos번째 substr의 시작 위치를 반환 없으면 -1반환

      let str = 'Widget with id';
      alert(str.indexOf('id', 2)); // 12
    • str.includes(substr,pos) : 부분 문자열 포함 여부 확인

      str에서 pos번째 substr이 있으면 true, 없으면 false

    • str.slice(start,end) : 부분 문자열 추출

      str에서 start부터 end까지 추출

      end는 생략 가능하며 생략시 끝까지

      start와 end는 음수도 허용하며 end는 start보다 커야한다.

    • str.substring(start, end) : 부분 문자열 추출

      str.slice와 비슷하나 start가 end보다 커도 괜찮으며 음수를 허용하지 않는다.

    • str.substr(start,length) : 부분 문자열 추출

      start부터 length만큼 문자열을 추출하고 start는 음수를 허용하나 substr은 구식 스크립트에 대응하기 위해 남겨놓은 메서드이다.

    • str.codePointAt(pos) : pos에 위치한 글자의 코드를 반환

      alsert('z'.codePointAt(0)); //122
    • String.fromCodePoint(code) : 숫자 형식의 code에 대응 되는 글자 반환

      alert(String.fromCodePoint(122)); // z
  • 숫자 (number)

    • e를 이용해 0의 개수 표시 가능

      let billion = 1e9; //10억
      alert(7.3e9); //73억
      let ms = 1e-6;
      0.000001;
    • 16진수는 0x로 표현

    • 2진수는 Ob

    • 8진수는 0o

    • 숫자를 문자로 바꿀때 num.toString(base)이용

      base는 2~36으로 바꿀 진법

      변수를 이용하는 것이 아닌 숫자 그대로 이용할때는 .을 한개 더 이용하거나 괄호()로 묶어주면 이용가능

      let num = 255;
      alert(num.toString(16)); //ff
      (255).toString(16); //ff
      (255).toString(16); //ff
    • Math.floor(num) : 소수점 첫째 자리에서 버림

    • Math.ceil(num) : 소수점 첫째자리에서 올림

    • Math.round(num) : 소수점 첫째자리에서 반올림

    • Math.trunc(num) : 소수 무시

    • num.toFixed(x) : 소수 x자리까지 반올림 후 문자열 반환

    • 숫자가 너무 크면 Infinity처리

    • js에서는 숫자의 부호를 단일비트로 저장하기 때문에 0-0두종류의 0이 존재한다. (대부분의 연산은 동일 취급)

    • NaN은 자기 자신을 포함하여 어떤 값과도 같지 않다.

      alert(NaN === NaN); //false
      • isNaN(value) : value를 숫자로 변환후 NaN 인지 판별 (value가 false면 숫자)

      • inFinte(value) : value를 숫자로 변환후 NaN/Infinity/-Infinity인지 판별 (value가 true면 일반 숫자)

    • Math.random() : 0과 1사이 난수 반환

    • Math.max(a,b,...) : 최대값 반환

    • Math.min(a,b,...) : 최솟값 반환

    • Math.pow(n,pow) : n의 pow 제곱 반환

  • bigint

  • boolean

  • null

  • undefined

  • symbol

    심볼은 유일한 식별자를 만들고 싶을때 사용

    let id = Symbol();
    let id1 = Symbol('name'); //심볼 이름이라 불리는 설명을 붙일 수도 있다. 여기서 name이 설명 부분

    심볼은 유일성이 보장되는 자료형이기 때문에, 설명이 동일한 심볼을 여러개만들더라도 각 심볼값은 다르다.

    또한, 심볼은 문자형으로 자동 형변환이 되지 않는다. 굳이 출력해야겠다면 .toString()함수 이용하거나 .description을 이용하면 설명만 보여줄 수 있다.

    let id1 = Symbol('id1');
    let id2 = Symbol('id2');
    
    alert(id == id2); //false
    alert(id1); //error
    alert(id1.toString()); //Symbol(id)

객체형

함수도 객체의 일종이다.

함수를 프로퍼티로 저장이 가능

js는 날짜, 오류, 시간, HTML 요소 등을 다룰 수 있게 내장 객체또한 제공

Array도 객체형에 속한다.

원시 래퍼 객체

원시값이 메서드나 프로퍼티에 접근할 수 있게 추가 기능을 제공해주는 특수 개체

String,Number,Boolean,Symbol 과 같다.

아래와 같이 원시값인 string형의 변수에 메서드를 접근할 수 있게 도와준다.

Last updated