parseInt와 Number, substr과 substring

citron03·2022년 2월 2일
0

html, css, js

목록 보기
21/43
post-custom-banner
  • 자바스크립트에는 유사한 기능을 제공하는 함수들이 있다.
  • 대표적으로 parseInt와 Number, substr과 substring이 있는데, 이들이 구체적으로 어떻게 다른지 예시로 기록한다.

parseInt와 Number

const num = 10.5586;
console.log(parseInt(num)); // 10
console.log(parseFloat(num)); // 10.5586
console.log(Number(num)); // 10.5586 

const num2 = 2;
console.log(parseInt(num2)); // 2
console.log(parseFloat(num2)); // 2
console.log(Number(num2)); // 2
  • parseInt는 정수로 숫자를 변환한다.
  • 반면, Number는 정수 또는 실수로 숫자를 반환한다.
  • Number와 비슷하게 작동하는 parseFloat가 있다.
const num = "7";
console.log(parseInt(num)); // 7
console.log(Number(num)); // 7

const num2 = "10abc";
console.log(parseInt(num2)); // 10
console.log(Number(num2)); // NaN
  • parseInt와 Number 모두 문자열이라도 숫자로 반환한다.
  • 하지만, Number를 사용한다면 문자열에는 숫자만 존재해야 한다.
const num = "masdk7";
console.log(parseInt(num)); // NaN

const num2 = "1ab696c";
console.log(parseInt(num2)); // 1
  • parseInt가 숫자가 아닌 문자가 섞인 문자열을 숫자로 변환할 때는 처음부터 시작하며, 숫자가 아닌 문자를 만나면 변환을 중지한다.

substr과 substring

const str = "Hello Worlds";

console.log(str.substr(6)); // Worlds
console.log(str.substring(6)); // Worlds

console.log(str.substr(2, 7)); // llo Wor
console.log(str.substring(2, 7)); // llo W
  • substr과 substring은 비슷하게 작동한다.
  • 인자를 하나만 주면, 그 인덱스부터 끝까지의 문자열을 반환한다.
  • 두 개의 인자를 주면 그 두 인덱스 사이의 문자열을 반환한다.
  • 그런데, 위의 예제를 보면 substring과 substr은 미묘한 차이가 있음을 알 수 있다.
  • substr과 substring의 첫 번째 인자는 시작 인덱스로 동일하다.
  • 하지만, substr의 두 번째 인자는 포함될 문자의 개수이고, substring의 두 번째 인자는 끝 문자열의 인덱스이다.
    (substring의 두 번째 인자 index 전까지 포함해 문자열이 return 된다.)
const str = "I am park";

console.log(str.substr(-4, 3)); // par
console.log(str.substring(-5, -1)); // ""
console.log(str.substring(-5, 7)); // I am pa

console.log(str.substring(0, -4)); // ""

console.log(str.slice(-5, -1)); // par
  • substr과 substring 모두 음수 인덱스를 사용할 수 있다.
  • 하지만, substr과 substring 모두 두 번째 인자는 음수가 들어갈 수 없다.
    (애초에 substr의 두 번째 인자는 문자열의 개수이다.)
  • slice를 사용하면, 두 인자 모두 음수 인덱스를 사용할 수 있다.
profile
🙌🙌🙌🙌
post-custom-banner

0개의 댓글