웹/JavaScript

[Javascript] 모던자바스크립트 딥 다이브 5일차 (~613p)

Judith Hopps 2023. 1. 26. 08:07
반응형

28.  Number

표준 빌트인 객체인 Number는 원시 타입인 숫자를 다룰 때

유용한 프로퍼티와 메서드를 제공한다.

//문자열 타입 => 숫자 타입
Number('2.3') // 2.3

//boolean 타입 => 숫자 타입
Number(true) // 1
Number(false) // 0

 

Number.isNaN

Number.isNaN 정적 메서드는 인수로 전달된 숫자값이

NaN인지 검사하여 그 결과를 불리언 값으로 반환한다.

 

//Number.isNaN은 암묵적 타입 변환 X
Number.isNaN(NaN) // true

Number.isNaN(undefined) // false

//isNaN은 인수를 숫자로 암묵적 타입 변환한다.
isNaN(undefined) // true

 

 

Number.prototype.toFixed

toFixed 메서드는 숫자를 반올림하여 문자열로 반환한다.

반올림하는 소수점 이하 자릿수를 나타내는 0~20 사이의 정수값을 인수로 전달할 수 있다.

인수 생략시 기본값 0이 지정된다.

 

(1234.23).toFixed() // 1234.23

(1234.2324).toFixed(2) // 1234.23

 

 

 

Number.prototype.toPrecision

toPrecision 메서드는 인수로 전달받은 전체 자릿수까지 유효하도록

나머지 자릿수를 반올림하여 문자열로 반환한다.

 

//전체 3자릿수 유효, 나머지 반올림
(1234.2342).toPrecision(3) //'1.23e+3'

(1234.2342).toPrecision(5) // 1234.2

 

 

 

Number.prototype.toString

toString 메서드는 숫자를 문자열로 반환하여 반환한다.

 

// 인수 생략시 10진수 문자열을 반환한다.
(10).toString() // '10'

// 2진수 문자열을 반환한다.
(10).toString(2) // '1010'

// 4진수 문자열을 반환한다.
(10).toString(4) // '22'

 

 

 

 

 

 

29. Math

 

Math.random

Math.random 메서드는 임의의 난수(랜덤 숫자)를 반환한다.

난수는 0~1미만 즉(0~0.9999999) 숫자를 반환한다.

 

// 1을 더하는 이유는 1~10까지 숫자 반환 때문
const random = Math.floor( Math.random() *10 +1 )

 

 

30. Date

 

Date를 활용한 시계 예제

 

(function printTime() {
    const now = new Date();

    const year = now.getFullYear();
    const month = now.getMonth() +1;
    const date = now.getDate();

    const dayName = [ '일','월','화','수','목','금','토'];
    const day = dayName[now.getDay()];

    let hour = now.getHours();
    let minute = now.getMinutes();
    let second = now.getSeconds();

    const ampm = hour >=12 ? 'Pm' : 'Am';
    hour = hour <10 ? '0'+hour : hour;
    minute = minute < 10 ? '0'+minute : minute;

    const time = `${year}년 ${month}월 ${date}일 ${day}요일 ${ampm} ${hour}:${minute}:${second}`;
    console.log(time);
    setTimeout(printTime,1000);
}());

// 2023년 1월 26일 목요일 Am 07:41:53
// 2023년 1월 26일 목요일 Am 07:42:11
// 계속 1초씩 출력

 

 

31. RegExp

 

정규 표현식

정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어이다.

 

정규표현식은 리터럴 표기법으로 생성할 수 있다. 정규 표현식 리터럴은 아래와 같이 표현한다.

 

 

플래그

플래그는 아래와 같은 종류가 있다.

i Ignore Case 대소문자를 구별하지 않고 검색한다.
g Global 문자열 내의 모든 패턴을 검색한다.
m Multi Line 문자열의 행이 바뀌더라도 검색을 계속한다.

 

 

 

 

패턴

패턴에는 검색하고 싶은 문자열을 지정한다. 이때 문자열의 따옴표는 생략한다. 따옴표를 포함하면 따옴표까지도 검색한다. 또한 패턴은 특별한 의미를 가지는 메타문자(Metacharacter) 또는 기호로 표현할 수 있다. 몇가지 패턴 표현 방법을 소개한다.

const targetStr = 'AA BB Aa Bb';

// 임의의 문자 3개
const regexr = /.../;

.은 임의의 문자 한 개를 의미한다. 문자의 내용은 무엇이든지 상관없다. 위 예제의 경우 .를 3개 연속하여 패턴을 생성하였으므로 3자리 문자를 추출한다.

 

반복검색

{최소,최대}

//'A'가 최소 1번 , 최대 2번 반복되는 문자열 검색

"A B AAA B AA B AAA B AA".match(/A{1,2}/g); // ['A', 'AA', 'A', 'AA', 'AA', 'A', 'AA']

//1개만 적을 시 최소 = 최대 

"A AAA AA B AAA AA".match(/A{2}/g); // ['AA', 'AA', 'AA', 'AA']

// 1개, 최소 0개
"A AAA AA B AAA AA".match(/A{2,}/g); // ['AAA', 'AA', 'AAA', 'AA']

 

 

\d는 숫자를 의미한다. \D는 \d와 반대로 동작한다.

const targetStr = 'AA BB Aa Bb 24,000';

// '0' ~ '9' 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
let regexr = /[\d,]+/g;

console.log(targetStr.match(regexr)); // [ '24,000' ]

// '0' ~ '9'가 아닌 문자(숫자가 아닌 문자) 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
regexr = /[\D,]+/g;

console.log(targetStr.match(regexr)); // [ 'AA BB Aa Bb ', ',' ]

\w는 알파벳과 숫자를 의미한다. \W는 \w와 반대로 동작한다.

 

 

앞선 패턴을 최소 한번 반복하려면 앞선 패턴 뒤에 +를 붙인다. 아래 예제의 경우, 앞선 패턴은 A이므로 A+는 A만으로 이루어진 문자열(‘A’, ‘AA’, ‘AAA’, …)를 의미한다.

const targetStr = 'AA AAA BB Aa Bb';

// 'A'가 한번이상 반복되는 문자열('A', 'AA', 'AAA', ...)을 반복 검색
const regexr = /A+/g;

console.log(targetStr.match(regexr)); // [ 'AA', 'AAA', 'A' ]

 

 

하나 이상의 공백으로 시작하는지 검사한다.

const targetStr = ' Hi!';

// 1개 이상의 공백으로 시작하는지 검사
// \s : 여러 가지 공백 문자 (스페이스, 탭 등) => [\t\r\n\v\f]
const regexr = /^[\s]+/;

console.log(regexr.test(targetStr)); // true

 

 

32. string

 

string.prototype.indexOf  / includes

indexOf 메서드는 대상 문자열에서 인수로 전달받은 문자열을 검색해서 첫번째 인덱스를 반환한다.

만약 실패시 -1을 반환한다.

 

includes 메서드는 문자열에  인수(문자열)이 있으면 true 없으면 false를 출력한다.

 

"asdf".indexOf('a') // 0

"asdf".includes('a') // true

 

 

카멜 케이스 / 스네이크 케이스

카멜 표기법

또는 낙타 표기법은 프로그래밍에서 파일, 변수, 함수 등 대상의 이름을 띄어쓰기 없이

짓기 위하여 따르는 관례인 네이밍컨벤션의 하나다.

 

 

 

스네이크 표기법

언더바(_) 가 들어 있는 표현 방식을 뱀처럼 생겼다고 하여 스네이크 케이스라고 한다.

 

 

반응형