+연산자
에 대해서는 피연산자를 모두 문자열로 변환시켜준다.
1 + "2" // "12"
1 + "js" // "1js"
해석 순서는 왼쪽에서 오른쪽이다.
1 + 2 + "1" // "31"
(1 + 2) + "1" // "31"
1 + "2" + 1 // "121"
(1 + "2") + 1 // "121"
-
, *
, /
연산자에 대해서는 피연산자를 모두 숫자
로 만든다.
1 - '1' // 0
1 * '10' // 10
1 / 'one' // NaN, 'one'을 숫자로 변환할수없음.
>
에 대해서는 피연산자를 모두 숫자
로 만든다음 표현식이 실행된다.
'1' > 0 // true, '1'이 1로 변환됨.
+
를 하나만 쓴경우 피연산자를 숫자
로 바꿔버린다.
// 문자열 타입
+'' // 0
+'0' // 0
+'1' // 1
+'string' // NaN
// 불리언 타입
+true // 1
+false // 0
// null 타입
+null // 0
// undefined 타입
+undefined // NaN
// 심볼 타입
+Symbol() // TypeError: Cannot convert a Symbol value to a number
// 객체 타입
+{} // NaN
+[] // 0
+[10, 20] // NaN
+(function(){}) // NaN
if문
안에서도 암시적 형변환이 일어난다. falsy
, truthy
값을 기준으로 변환된다.
if ('') console.log('1');
if (0) console.log('3');
if ('str') console.log('4');
if (null) console.log('5');