[JS] 5-1. 원시값의 메서드

heyhey·2023년 2월 23일
0

JavaScript

목록 보기
10/14

JS는 원시값을 객체처럼 다룰 수 있다.
원시값에도 객체에서처럼 메서드를 호출할 수 있다.
원시값은 객체가 아니다.

  • 객체는 함수를 프로퍼티로 저장할 수 있다는 장점이 있다.
  • 하지만 원시값보다 무겁기 때문에 객체는 시스템 자원이 많이 소모된다.

원시값을 객체처럼 사용하기


문자열이나 숫자와 같은 원시값을 다뤄야 하는데, 메서드를 사용해 작업을 하고 싶을 때를 위해 JS에서 만든 기능이다.

  1. 원시값은 원시값 그대로 남겨둬 단일 값 형태를 유지하고 싶다
  2. 문자열 숫자 물린 심볼의 메서드와 프로퍼티에 접근할 수 있게 언어에서 허용해야한다.
  3. 이를 가능하게 하기 위해 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체인 "원시 래퍼 객체" 를 만들어 준다. 이 객체는 곧 삭제된다.

우리가 평소에 자주 사용하는 이것들이 그 형태이다.

  • String
  • Number
  • Boolean
  • Symbol

string 자체는 메서드가 없지만 a= 'hihi' a.toUpperCase()처럼 메서드를 사용가능한 이유가 그것이다.

  1. 원시값의 프로퍼티 toUpperCase() 에 접근하는 순간 특별한 객체가 만들어진다.
    이 객체는 여러 메서드를 가지고 있다.
  2. 메서드가 실행되고, 새로운 문자열이 반환된다.
  3. 객체는 파괴되고, 원시값 a 만 남게 된다.

String / Number / Boolean 을 생성자로 쓰지 말자
new Number(1) 처럼 래퍼 객체로 직접 만들 수 있지만, 저렇게 만들게 되면 타입이 객체가 되기 때문에 혼동을 불러 일으킨다.

숫자형


e

1e3 = 1000
10의 3승 이라는 의미로 사용된다.

1e-3 = 0.001

toString(base)

base 진법으로 num을 표현한 후 문자열로 변환해 반환한다.

반올림, 올림, 내림

Math.floor : 소수점 첫째 자리에서 내림 (3.1 => 3)
Math.ceil : 소수점 첫째 자리에서 올림 (3.1 => 4)
Math.round : 소수점 첫째 자리에서 반올림
Math.trunc : 소수점을 무시 (3.1 => 3)

toFixed(n) => 소수점 n번째 수까지의 어림수를 구한 후 문자열으로 반환해준다.

번외

숫자는 내부적으로 64비트형식을 인식하기 때문에 너무 큰 숫자는 Infinity 로 처리된다.

정밀도 손실

이진수로 변환되어 메모리 공간속에 저장되기 때문에 10진법을 사용한 0.1이나 0.2 같은 분수는 이진법으로 표현하면 무한 소수가 된다.
=> 그 차이로 인해 a==b 가 일치하지못하게 된다.

parseInt / parseFloat

숫자 + 문자 의 경우 사용하면 정수, 실수를 반환해준다.

Math

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math

를 들어가 필요한 연산자를 찾아보도록 하자

문자열


str.indexOf(substr,pos)

str의 pos부터 시작해 substr이 어딨는지 찾아준다.
없으면 -1을 반환한다.

i0i1i2.indexOf('i',2) => 2
2번째 i 가 어디에 존재하는지 찾는 함수

includes , startsWith, endsWith

substr이 포함되는지 true/false

부분 문자열 추출하기

str.slice(start,[,end])

str = "stringify"
str.slice(0,5) => strin (0번째부터 5번째까지)
str.slice(0,1) => s 

end가 생략되면 끝까지 반환한다.

str.slice(2) => ringify (2번부터 ~)

str.substring(start,[,end])

start 와 end 사이의 문자열을 반환한다.
slice랑 똑같은거 아냐? 똑같아 보이지만 start가 end보다 커도 괜찮고, 음수는 적지 못하는 차이가 있다.

str.substr(start [, length])

start 부터 length개의 문아를 반환한다.

profile
주경야독

0개의 댓글