문자열 기본
자바스크립트는 작은 따옴표, 큰 따옴표, 백틱( ` ) 다 사용 가능하다.
짝을 맞추지 않으면 에러가 난다. 하지만 백틱은 짝을 안맞추면 결과가 에러 나지 않고 빈 칸 나온다.
백틱의 특성은 줄바꿈을 할 수 있다는 것!
typeof '문자열' -> 'string'
typeof `문자열
`
-> 'string'
typeof '' -> 'string'
"'"
'"'
`"`
'how're you?' , ""정말" 그랬니?"(강조표현) 를 사용할 수 있는 방법은...
'"정말" 그랬니?' 와 같이 따옴표를 반대되는 것끼리 써주는 것이거나, 역슬래시를 사용하는 방법이다.
ex. 'how\'re you?'
역슬래시를 두 개 사용하면 역슬래시 한 개를 사용할 수 있다.
(쉬프트 + 엔터를 누르면 엔터를 적용할 수 있다.)
숫자 기본
5e4 -> 50000
5e-4 -> 0.0005
0b111 -> 7 (이진법)
0111 -> 73 (8진법)(0o라고 써도 됨)
0x1a1 ->417 (16진법)
typeof NaN
-> "number"
'바나나' + '사과' -> '바나나사과'
'바나나' - '사과' -> NaN
※
NaN 은 not a number 의 약자로, 숫자가 아니지만 숫자이다. (typeof 의 결과가 number 이다)
parseInt('124') 혹은 Number('124')
-> 124 라는 숫자로 치환됨
parseInt('3.14') -> 3
이렇게 결과가 나오는 이유는 '정수로 바꿔라'라고 해석했기 때문이다.
parseFloat('3.14') -> 3.14
실수로 바꿔라
그럼 Number 가 정수도, 실수도 바꾸니까 최강 아니야?라고 생각할 수 있지만 그렇지 않다.
parseInt('3월')
-> 3 (정수를 뽑아서 추출)
Number('3월')
-> NaN
추가로..
'123123'.substr(0,2) -> "12"
'123123'.substring(0,2) -> "12"
(이것도 같아 보이지만 다른 이름은 다른 기능이라고 생각하면 좋다.)
typeof parseInt(prompt());
무슨 창이 뜬다. 그것은 직접 값을 입력할 수 있는 창이다.
-> 그 후 자료형을 출력 ( = typeof )
↓
parseInt(prompt()) -> 무조건 숫자로 바꿈
(안녕이라고 쳐도 자료형이 number로 출력됬었음)
(prompt( ) 단독은 문자열을 받는 것이다.)
parseInt(111, 2);
-> 7 (2진법이라는 뜻이다.)
parseInt(prompt( ))
("abc" 입력 )
> NaN 출력 (그러나 typeof 하면 숫자형이라고 함. 아까 NaN은 숫자가 아니지만 숫자이다를 배웠다. )
거듭제곱 연산자 **
3**2 -> 9
'문자열' - 0
-> 이거는 숫자이거나 NaN
parseInt('3월')-1 = 2
'3월' - 0 = NaN
연산자 우선순위, 소수 계산 주의점
부동소수점 문제가 존재한다. 이건 C 나 자바에서도 존재..
0.1 + 0.2 = 0.300000004
0.3 - 0.1 = 0.1999999998
이런 것들...
가장 간단한 방법은 실수를 정수로 바꿔서 계산한 뒤, 다시 실수로 바꿔주는 것이다.
(0.3 * 10 - 0.1 * 10)/10 = 0.2
불 값
true 나 false 는 문자열이 아니기 때문에 따옴표로 감싸지 않는다.
값 중에서 NaN 은 비교할 때 독특한 성질을 띤다.
바로 NaN 끼리 비교할 때 false 값을 가진다는 것이다. 이는 숫자, 문자열, 불 값을 통틀어 false 가 나오는 유일한 값이다.
NaN == NaN
-> false
<= 나 >= 연산자를 써도 결과는 false 만 나온다.
다만 != 연산에서는 true 를 출력한다.
true > false
-> true (불값끼리 비교 가능, true 를 1)
'b@' > 'a';
-> true
문자끼리 비교 가능한데, 알파벳 사전 순으로 커진다. 또한 특수문자도 비교 가능하다.
'&'.charCodeAt()
-> 65286
캐릭터 코드엣
'abc' < 5;
-> false
( 이 경우 문자열 abc 를 숫자로 바꾸면 NaN 이 된다. NaN 과의 비교는 false 이다.)
값뿐만 아니라 자료형까지 같은지 비교하는 연산자 ===
1 === true
-> false
1 != '1';
-> false
1 !== '1';
true
논리연산자
&& 는 '그리고' 라는 연산자
|| 는 '또는" 이라는 연산자
!!'a';
-> true
(느낌표가 2개 있으면 불리언으로 형 변환해주는 연산자라고 생각하자. ) = Boolean('a')
★
false , 빈 문자열, 0 , NaN 은 불값으로 형 변환했을 때 false 가 된다.
underfind 와 null 까지 형 변환시 false 가 된다.
이 여섯가지만 알면 된다. 이건 외워야 한다.
undefined 와 null
빈 값에 대해 알아보자.
undefined 와 null 자료형이 있다.
console.log(~~) 칠 때 undefined 가 나왔다. 응답해줄게 없다는 뜻이다.
1+3 = 4 와는 다르게 결과물을 돌려줄 것이 없다는 뜻이다.
하지만 자바스크립트적인 해석은 'undefined 를 돌려준다' 라고 해석해주자.
undefined == false;
-> false
undefined == 0
-> false
undefined == ''
-> false
null 은 undefined 처럼 빈 값을 의미하지만 같지는 않다.
null 은 의도적으로 빈 값을 넣을 때 많이 쓰인다. 나중에 배우게 될 것..
↓
undefined == null
-> true
undefined === null
-> false
빈 값을 의미하는 자료형은 undefined 와 null 이 있다는 것을 기억하자.
!! null
-> false
null == false;
-> false
null == 0
-> false
null == ''
-> false
null 은 undefined 의 3개의 예제처럼 같다.
typeof null
-> "object"
아까도 말했다시피 undefined 와 null 은 같은 자료형이 아니다.
(결괏값이 "null" 이 아니라 "object" 입니다. 이 현상은 자바스크립트에서 유명한 버그이다. 원래는 "null" 이 나와야 하지만 언어가 만들어진 초창기 실수 때문에 "object" 가 됐습니다. 그 이후로는 바꿀 수가 없게 됐습니다.(바꾸고 나면 기존에 typeof null 식을 사용하는 모든 곳에 영향이 가기 때문이다. 따라서 값이 null 인지 확인하기 위해서는 ===null 을 사용해야 합니다.)
웬만하면 == 말고 === 쓰자.
변수 선언 (let)
let string = 23325523;
사진 참고하면..
console.log ( title )
-> 23325525
-> undefined
그러나
title
-> 23424235235
console.log 는 돌려주는 역할을 하는게 아니라 그림판처럼 쓰는 것이다. 잠깐 그 변수 값이 뭔지 적어두고 그런 역할.. console.log 는 단순히 화면에다 적는 것
변수 선언한 것은 undefined 가 나온다.
'🤹🏻♀️ Javascript' 카테고리의 다른 글
html 객체 가져오기, window 이벤트 (0) | 2021.10.09 |
---|---|
조건문, 반복문, 함수, 객체 등 (0) | 2021.10.03 |
'이벤트 객체'를 통해서 메뉴 활성화 버튼 실습 (0) | 2020.05.06 |
클릭하면 버튼 색깔 바꾸기 (0) | 2020.05.03 |
addEventListener & removeEventListener (0) | 2020.04.30 |