[TIL] 07 -JS Basic #2 자료형

UlongChaS2·2021년 4월 15일
0

TIL - JS

목록 보기
2/6

자료형

JS의 존재하는 값(프로그램이 조작할 수 있는 데이터)의 종류를 자료형이라 부른다.

문자열 (Strings)

문자열을 나타날 때 '', "", ``으로 감싸줘야 한다.

주의할 점

  • 줄 바꿈
    ''""는 줄 바꿈을 할 때 \n을 써주면 되지만 ``은 enter을 그냥 써도 줄 바꿈이 가능하다.
  • 겉에 싸준 특수기호가 문자열 안에도 들어가는 경우
    how're you? 같은 문자열을 쓰고 싶을 때는 컴퓨터가 가운데 '와 겉에 싸는 ''와 혼동할 수 가 있어 "how're you?"로 써주거나 \을 사용하여 'how\'re you?'로 써서 문자열이 how're you?로 되게 된다. 당연 ``을 써도 되지만 보통 ''을 많이 쓰니 규칙적으로 사용하는 것을 생각해 두 번째 방법을 사용하는걸 추천한다.
  • \에 의한 생략
    \만 쓴다면 그 뒤 문자가 생략되기 때문에 고려해서 사용해야 한다.
    '1\2\3\' -> "1"으로 쓰면 \ 때문에 뒤에 값이 다 생략 되지만 '1\\2\\3\\'-> "1\2\3"으로 결과 값이 나타난다.
  • '', "", `` 비어 있어보여도 문자열
    사람 눈에는 비어 있으니 공백이여서 문자열이 아니다 생각할 수 있지만 띄워쓰기 하나로 다르다는 개념이 되기 때문에 잘 인지하고 있어야한다.
    ex) ' '=='' -> false로 빈칸 있는 거와 빈칸 없는 문자열은 같지않다. (""``도 마찬가지)
  • 띄위쓰기
    문자열을 더할 때 띄워쓰기를 고려하고 기입해야한다. 만약 띄워쓰기 안하면 적은 문자가 그대로 붙어서 출력된다.
    • '나는' + '프론트' + '개발자가' + '되고싶다.' // "나는프론트개발자가되고싶다."
      '나는 ' + '프론트 ' + '개발자가 ' + '되고싶다.' // "나는 프론트 개발자가 되고싶다."

  • typeof ()
    본인이 기입한 내용의 자료형 종류를 알고 싶을 때 사용하는 함수이다.
    • typeof ('문자열') -> "strings"
    • typeof (true) -> "boolean"

숫자 (Number)

숫자는 아무것도 감싸면 안된다. (아무리 숫자라도 감싸면 문자열로 인식하게 됨)

보통 산수에서 쓰는 표현을 그대로 쓰지만 조금 다른 표현들이 있다.

  • 반복되는 0이 많은 경우
    • 500000 => 5e5 (소수점 위로 0이 5개)
    • 0.0005 => 5e-4 (소수점 아래로 0이 4자리)
  • 2진법, 8진법, 16진법
    • 2진법 0b1010 // 10
    • 8진법 012 || 0o12 // 10
    • 16진법 0xA // 10
  • NaN
    Not A Number이란 뜻이지만 typeof ()에 대입하면 "Number"라고 출력된다.
    • 0/0NaN이 나온다.
  • 문자열과 숫자 같이쓰는 경우
    '123' + 5의 답은 11일 것 같지만 문자열로 '1235'로 인식된다.
    문자열이 아닌 숫자로 바꾸고 싶을 때는 정수로 바꿔주는 함수 ParseInt ()를 쓰거나 소수일 때는 소수로 바꿔주는 함수 ParseFloat ()를 써준다. 참고로 Number ()를 쓰면 정수와 소수 구분하지않고 모든 것을 숫자로 바꿔준다.
  • Infinity
    무한을 나타내는 숫자
    • 2/0은 무한대로 값이 Infinity, -2/0은 -Infinity로 나옴
    • Infinity는 무엇을 +, -, *, /해도 무한이지만 Infinity - InfinityNaN이다.

소수점의 덧셈, 뺄셈 오차 (부동소수점 문제)

컴퓨터는 2진법을 사용하기 때문에 소수일 때 사람이 생각한 답과 다를 수 있다.

  • 덧셈
    • 0.1+0.2 = 0.30000000000000004 (컴퓨터)
    • 0.1+0.2 = 0.3 (사람)
  • 뺄셈
    • 0.3-0.1 = 0.19999999999999998 (컴퓨터)
    • 0.3-0.1 = 0.2 (사람)
  • 해결 방법
    소수에 10을 곱해 정수로 만든 뒤 다시 10으로 나눠주면 된다.
    • (0.3*10-0.1*10)/10 = 0.2

ParseInt () vs Number ()의 차이점

Number ()가 정수와 소수를 모두 인식하닌깐 ParseInt ()쓰지않아도 되지 않나?라는 의문이 들 수 있는데 다른 점'3월'과 같은 문자열에 있는 숫자경우 ParseInt ('3월') => 3이란 정수만 뺀 결과 값이 나오고 Number ('3월') -> NaN이란 결과 값을 가지게 된다.
(비슷한 기능을 가졌다고 같은 것이 아니라 분명 다른 점이 있기에 이름이 다른 함수를 가지고 있는 것이다.)


불값 (Boolean)

true와 false를 뜻함, 다른 언어는 true를 1, false는 0으로 쓰일 때가 있지만 JS에서는 truefalse를 자체 값으로 존재한다.

  • 문자열이 아니기 때문에 ''로 감싸지 않는다.
true == 'true' // false

=> 불값 true와 문자열 true는 같지 않다. (false 역시 똑같다.)

빈값

undefinednull이 있다.
undefinedundefined(돌려줄 값이 존재하지 않음)을 돌려준다.
null은 의도적으로 빈값을 넣을 때 많이 사용
undefined는 컴퓨터가 돌려주는 값 null은 본인이 넣은 값으로 차이점을 주는 것이 좋다.

!!undifined // false
!!null // false
undefined == null // true
undefined === null // false

JS의 유명한 버그 typeof null

typeof null의 결과 값은 "object"라고 나오는데 결과 값이 "null"이 나오는게 맞지만 예전부터 있던 버그이고 이 공식으로 외우고 사용했던 사람이 많아 지금으로써 고치기 어렵기 때문에 계속 쓰고 있다.


0개의 댓글