JS는 원시값을 객체처럼 다룰 수 있다.
원시값에도 객체에서처럼 메서드를 호출할 수 있다.
원시값은 객체가 아니다.
문자열이나 숫자와 같은 원시값을 다뤄야 하는데, 메서드를 사용해 작업을 하고 싶을 때를 위해 JS에서 만든 기능이다.
우리가 평소에 자주 사용하는 이것들이 그 형태이다.
string 자체는 메서드가 없지만 a= 'hihi'
a.toUpperCase()
처럼 메서드를 사용가능한 이유가 그것이다.
toUpperCase()
에 접근하는 순간 특별한 객체가 만들어진다.String / Number / Boolean 을 생성자로 쓰지 말자
new Number(1) 처럼 래퍼 객체로 직접 만들 수 있지만, 저렇게 만들게 되면 타입이 객체가 되기 때문에 혼동을 불러 일으킨다.
e
1e3
= 1000
10의 3승 이라는 의미로 사용된다.
1e-3
= 0.001
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 가 일치하지못하게 된다.
숫자 + 문자 의 경우 사용하면 정수, 실수를 반환해준다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math
를 들어가 필요한 연산자를 찾아보도록 하자
str의 pos부터 시작해 substr이 어딨는지 찾아준다.
없으면 -1을 반환한다.
i0i1i2.indexOf('i',2)
=> 2
2번째 i 가 어디에 존재하는지 찾는 함수
substr이 포함되는지 true/false
str = "stringify"
str.slice(0,5) => strin (0번째부터 5번째까지)
str.slice(0,1) => s
end가 생략되면 끝까지 반환한다.
str.slice(2) => ringify (2번부터 ~)
start 와 end 사이의 문자열을 반환한다.
slice랑 똑같은거 아냐? 똑같아 보이지만 start가 end보다 커도 괜찮고, 음수는 적지 못하는 차이가 있다.
start 부터 length개의 문아를 반환한다.