조현영 님의 Let's get IT 자바스크립트 프로그래밍 책과 강의를 보며 처음 안 부분, 중요하다고 생각 된 개념들만 모아놓은 글입니다.
학교, 42서울 내에서 C를 위주로 프로젝트를 해내다보니 새로운 언어를 익혀야 할 기회가 그리 많지 않았다.
머신러닝 강의를 듣기 시작하면서 파이썬을 사용할 때 언어를 생각보다 빨리 습득할 수 있다고 느꼈기 때문에 자바스크립트도 그럴 줄 알았다.
웬걸 ㅋ 조현영님의 유튜브에 있는 자바스크립트 강의를 출근길에만 뜨문뜨문 봤더니 문법들을 볼때마다 새롭다.
자바스크립트 코드를 짤때마다 한 줄을 채우기 위해 구글링을 하는 것도 시간낭비인 것 같아서 자바스크립트책을 빠르게 훑고 손에 익히기로 했다.
1장의 내용은 자바스크립트 코딩을 하기 위한 환경을 구축하는 부분이기 때문에 적지 않았다.
typeof 값
Number()
parseInt()
, parseFloat()
parseInt(문자열)
parseFloat(문자열)
parseInt(prompt())
parseInt(정수, 진수)
<-10진법은 기본적으로 정수가 해석되는 방법이기 때문에 생략해도 되는 것임.parseInt('3월')
3
Number('3월')
NaN // NaN의 자료형은 Number이다.
parseInt('3.14')
3
Number('3.14')
3.14
즉 parseInt()는 문자열에 들어있는 숫자를 파싱해서 정수로 변환해주는 것에 충실하고 Number()는 문자열형태의 숫자를 Number자료형으로 변환해주는 것이지 문자열->숫자의 기능이 중점인 것은 아니다.
목적과 필요에 맞게 선택해서 사용하면 된다.
Infinity라는 키워드는 무한대를 뜻한다. 자료형은 Number
'string' + 0 = 'string0'
'1' + 0 = '10'
'string' - 0 = NaN
'9' - 4 = 5
문자열에서 숫자로 형변환을 하고싶다면 parseInt를 실행한 결과를생각해보면 된다.
>0.3-0.1
<0.19999999999999998
왜이럴까 ?
컴퓨터에선 숫자도 결국 0과 1로 표현되고 실수가 2진수로 바뀔 때 무한반복되는 실수가 생기기 떄문에 근삿값으로 저장되는 숫자가 있다.
이런 부동소수점 문제를 방지하기 위해 실수를 정수로 바꿔서 계산하고 이후 다시 실수로 바꿔주는 방법을 사용한다.
>(0.3 * 10 - 0.1 * 10) / 10
<0.2
>NaN == NaN
<false
>NaN >= NaN
<false
>NaN != NaN
<true
아스키코드값이 앞선 문자가 나오면 더 작다고 판별
문자열의 아스키코드값 알기
>'a'.charCodeAt()
<97
다른 자료형이 숫자로 형변환 후 비교연산이 실행된다.
>'3' < 5
<true
>'abc' < 5
<false //'abc'가 숫자로 형변환되면 NaN이기 때문에 결과는 false
>'0' < true
<true //true는 숫자로 형 변환시 1
==
는 자료형이 다를 때 형변환 후 비교연산을 진행하지만 ===
는 값 뿐만 아니라 자료형도 같아야한다. (!=
는 !==
로!)
자료형의 종류 - string
, number
, boolean
, undefined
, null
, object
, symbol
빈값을 나타내는 자료형 - undefined
, null
반환할 결과값이 없을 때 출력되는 값이다.
예를 들어 console.log() 명령어를 사용했을 때 콘솔에 무언가를 출력하지만 그 자체로 반환 값이 없기 때문에 undefined가 반환된다.
>typeof undefined
<"undefined"
>!!undefined
<false
>undefined == false //undefined == false가 참은 아니다.
<false
>undefined == 0
<false
>undefined == ''
<false
값을 할당하지 않은 변수, 함수가 값을 return하지 않을 때 사용
>undefined == null
<true
>undefined === null
<false
>typeof null
<"object" //버그임!
어떤 값이 의도적으로 비어있음을 표현할 때 사용