원시값(숫자, 문자열)과 메서드

황성호·2021년 3월 9일
0
post-custom-banner

원시값을 객체처럼 사용시 일어나는 일

  1. 원시값은 원시값 그대로 남겨둬 단일 값 형태를 유지합니다.
  2. 문자열, 숫자, 불린, 심볼의 메서드와 프로퍼티에 접근할 수 있도록 언어 차원에서 허용합니다.
  3. 이를 가능하게 하기 위해, 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체, "원시 래퍼 객체(object wrapper)"를 만들어 줍니다. 이 객체는 곧 삭제됩니다.
let str = "Hello";
alert( str.toUpperCase() ); // HELLO

ex) str.toUpperCase() 호출시

  1. 문자열 str은 원시값이므로 원시값의 프로퍼티(toUpperCase)에 접근하는 순간 특별한 객체가 만들어집니다.
  2. 이 객체는 문자열의 값을 알고 있고, toUpperCase()와 같은 유용한 메서드를 가지고 있습니다.
  3. 메서드가 실행되고, 새로운 문자열이 반환됩니다(alert 창에 이 문자열이 출력됩니다).
    특별한 객체는 파괴되고, 원시값 str만 남습니다.

숫자형

toString(base)
num.toString(base) 메서드는 base진법으로 num을 표현한 후, 이를 문자형으로 변환해 반환

let num = 255;

alert( num.toString(16) );  // ff
alert( num.toString(2) );   // 11111111

어림수 구하기

Math.floor
소수점 첫째 자리에서 내림(버림). 3.1은 3, -1.1은 -2
Math.ceil
소수점 첫째 자리에서 반올림. 3.1은 3, 3.6은 4, -1.1은 -1
Math.trunc
소수부를 무시. 3.1은 3이 되고 -1.1은 -1
Number.toFixed(5)
인수만큼 소숫점 아래를 남겨서 출력, toFixed는 다른함수들과 다르게 문자열로 반환함! 기억하기!

let num = 12.34;
alert( num.toFixed(5) ); // "12.34000"

isNaN(value)
인수를 숫자로 변환한 다음 NaN인지 테스트
isFinite(value) – 인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity가 아닌 일반 숫자인 경우 true

parseInt와 parseFloat
불가능할 때까지 문자열에서 숫자를 읽음
읽을 수 있는 숫자가 없을시 NaN반환

alert( parseInt('100px') ); // 100
alert( parseFloat('12.5em') ); // 12.5

alert( parseInt('12.3') ); // 12, 정수 부분만 반환됩니다.
alert( parseFloat('12.3.4') ); // 12.3, 두 번째 점에서 숫자 읽기를 멈춥니다.

parseInt(str, radix)
radix로 읽을 진법 정할 수 있음!

alert( parseInt('0xff', 16) ); // 255
alert( parseInt('ff', 16) ); // 255, 0x가 없어도 동작합니다.
alert( parseInt('2n9c', 36) ); // 123456

Math.random()
0과 1 사이의 난수를 반환
Math.max(a, b, c...) / Math.min(a, b, c...)
인수 중 최대/최솟값을 반환
Math.pow(n, power)
n을 power번 거듭제곱한 값을 반환

문자열

파이썬처럼 str[1:]로 문자열 접근 불가!!!
문자열의 불변성
문자열은 수정불가
문자열의 중간 글자 하나를 바꾸려고 하면 에러가 발생
그러므로 완전히 새로운 문자열을 하나 만든 다음, 이 문자열을 str에 할당해야함

let str = 'Hi';
str = 'h' + str[1]; // 문자열 전체를 교체함
alert( str ); // hi

str.indexOf
문자열 str의 pos에서부터 시작해, 부분 문자열 substr이 어디에 위치하는지 반환

let str = 'Widget with id';

alert( str.indexOf('Widget') ); // 0, str은 'Widget'으로 시작함
alert( str.indexOf('widget') ); // -1, indexOf는 대·소문자를 따지므로 원하는 문자열을 찾지 못함

alert( str.indexOf("id") ); // 1, "id"는 첫 번째 위치에서 발견됨 (Widget에서 id)

str.lastIndexOf(substr, position)
문자열 끝에서부터 부분 문자열을 찾는다는 점

indexOf로 조건문 작성시 조심해야할 점
indexOf로 문자열을 못찾을 시 -1을 리턴함
-1은 true기 때문에 -1로 비교하거나 NOT연산자(~)를 사용해야함!(중요)*

https://ko.javascript.info/

profile
개발!
post-custom-banner

0개의 댓글