NaN
이란 Not a Number의 줄인말이며 숫자가 아니다라고 알려주는 기호
그래서
바나나에서 사과를 빼면 NaN
가 나오지만
typeof NaN
을 해보면 숫자라고 알려준다....
사람의 직관하고 다른 건 외워줘야 한다.
즉 NaN
은 숫자는 아니지만 숫자다!
parseInt
는 정수로 바꾸다라는 개념이다.
즉 문자를 정수로 바꾸는 명령어인 것이다.
하지만 문자를 숫자로 바꾸는 명령어에는 Number
도 있다
그럼 둘의 차이가 무엇인가??
소수는 parseInt
명령어에 의해서 정수로 변경이 되고 Number
에 의해서는 그냥 소수 그대로가 나온다.
참고
parseFloat
을 하면 소수로 나옴
그렇다면 Number
가 개꿀이네??
문자열 3월이 parseInt
와 만나면 3이 반환되지만 Number
와 만나면 NaN
이 반환이 된다.
즉 Number
의 경우에는 진짜 문자가 들어가면 NaN
이 나오고 parseInt
의 경우에는 문자가 들어가 있어도 숫자만 반환이 되서 나온다.
가장 앞에 있는 숫자를 반환함.
컴퓨터 언어는 대부분 같은 기능을 하면 둘 중 하나는 없애버림
컴퓨터의 치명적인 약점인 소수점 계산
왜?
자바스크립트에서는 문자열 아니면 숫자열이기 때문에 과거 컴퓨터 성능이 좋지 않았을 때 만들어진 언어이기 때문에 숫자의 타입의 크기를 지정해서 메모리를 효율적으로 사용하기 위해 타입이 분류되었으나 최근에는 성능이 좋아지면서 신경을 덜쓰게 됨
그래서 이진법으로 나타난 소수들은 계산하기 쉬운 반면 그렇지 않은 소수들은 계산에서 오류가 남!
대표적으로 0.1 + 0.2가 있음
해결법
정수로 바꿔준 다음 소수로 만들면 된다.
이놈들이 정수는 기가막히게 계산을 잘하기 때문에 0.1 + 0.2가 아닌 1 + 2로해서 10으로 나눠주면 된다.
코드 작성시 줄바꿈하고 싶고 그런데 컴퓨터는 enter를 인식하지 못하기 때문에 이스케이프
라는 것이 존재함
즉 특수문자를 사용할 수 있게 해주는 것으로 다음과 같다
근데 템플릿리터럴
이 나오면서 잘 안사용하게 됨
나중에 나오지만 간단히 보자면 백틱(``
)으로 감싸서 사용하고 백틱안에 모든 것들은 문자열로 인식하게 됨