때문에 때에 따라 음수일 경우도 생각해서 단순히 소수점만 버리고 싶다면 Math.trunc()를 사용하는것이 좋다.
let a = 1, b = 1;
let c = ++a; // ?
let d = b++; // ?
이 코드가 실행되고 변수 a,b,c,d엔 각각 어떤 값들이 저장될지 묻는 문제가 있었다.
나는 c와 d에서 값이 바뀐 a와 b는 그저 변수에만 저장되고 기본값은 바뀌지 않았을 거라고 생각해서 1,1,2,1의 답을 내었다.
그러나 a와 b의 값 역시 2로 바뀌어 있었다. 이런 경우에도 해당 변수의 값이 바뀐다는 걸 알 수 있었다.
기본기가 아직 많이 부족하다는 걸 느낀 부끄러운 문제였다.
"" - 1 + 0 = NaN // ""가 형 변환되면 0. 따라서 -1
true + false = NaN // true = 1, false = 0으로 형 변환. 따라서 1
4 + 5 + "px" = 45px // 문자열 전까지의 숫자끼리는 연산한다. 따라서 9px
null + 1 = NaN // null이 형 변환되면 0. 따라서 1
" \t \n" - 2 = NaN // \t, \n이 무엇을 뜻하는지 몰랐는데 공백을 만드는 문자이기에 0이 된다. 따라서 -2
전체적으로 연산 시에 자동으로 형 변환이 된다는 것을 몰랐기에 벌어진 일이었다.