🤹🏻‍♀️ Javascript

문자열, 숫자, 불 값, 논리연산자, undefined 와 null

ji-hyun 2021. 10. 2. 21:07

문자열 기본

 

자바스크립트는 작은 따옴표, 큰 따옴표, 백틱( ` ) 다 사용 가능하다.

짝을 맞추지 않으면 에러가 난다. 하지만 백틱은 짝을 안맞추면 결과가 에러 나지 않고 빈 칸 나온다.

 

백틱의 특성은 줄바꿈을 할 수 있다는 것! 

 

 

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 가 나온다.