Meme's IT

[JS] 헷갈리는 문법들 본문

FrontEnd/JavaScript

[JS] 헷갈리는 문법들

Memez 2023. 10. 24. 14:03

# 문자열로 이루어진 숫자에서 계산하기

1. 덧셈일 때

정수 → 문자열로 형 변환

console.log('1' + 2) // 12
console.log(1 + '2') // 12

 

2. 덧셈이 아닌 연산들

문자열 → 숫자로 형 변환됨

console.log(5 - '2') // 3
console.log(5 * '2') // 10
console.log(5 / '2') // 2.5

 

3. 섞여있다면?

console.log("10" * 3 + "10" - 2)

뭐가 나올까...

우선, 사칙연산의 우선순위는 지켜지므로 곱셈, 앞에서부터

console.log("10" * 3)

이때는 +가 아니므로 문자열이 숫자로, 10 * 3인 30이 나옴

 

그 다음은 "10" 이 더해짐

console.log("10" * 3 + "10")

+연산이므로 숫자가 문자열이 됨

앞에 30이 문자열이 되어서 "30" + "10"

즉, "3010"이 된다..

 

마지막으로

console.log("10" * 3 + "10" - 2)

앞에 세개까지는 "3010" 이므로, "3010" - 2

+가 아니므로 문자열이 숫자로, 3010 - 2 = 3008

 

즉, 최종 결과는 3008이 된다

 

 

미쳤네

 

 

let number = 13
number++  
console.log(number++) // 14
console.log(++number) // 16
console.log(10 + ++number + 10) // 37
console.log(10 + number++ + 10) // 37
console.log(10 + number++ + '10') // 2810
console.log(number) // 19

 


 

# 문자열로 형변환 되어서 계산

덧셈은 문자열이 우선순위가 높다

let str = "hello"
let bool = true

console.log(str + bool)	// hellotrue
console.log(str - bool)	// NaN(Not a Number)
console.log(str * bool)	// NaN

 

'FrontEnd > JavaScript' 카테고리의 다른 글

[JS] Object(객체)  (0) 2023.10.25
[JS] 참조 자료형, 함수  (0) 2023.10.25
[JS] 조건문과 반복문  (0) 2023.10.24
[JS] 연산자  (0) 2023.10.24
[JS] 데이터 타입  (0) 2023.10.24