04.Type conversion
console.log(1 == true); // true
console.log(NaN == true); // false
console.log(undefined == true); // false
console.log(null == true); // false
console.log("" == true); // false (빈 string은 제로바이트. 0으로 변환된다.)
console.log(55 + true); // 56 (true는 1로 변환된다.)
console.log(55 + "true"); // "55true" (숫자에 문자열을 더하면 문자열이 된다.)
console.log(10 + 55 + "true"); // "65true" (왼쪽부터 계산이 이루어지므로 더하기 이후 형변환.)
// '=='는 형변환이 일어나지만, '==='는 형변환이 일어나지 않는다.
console.log("1" == 1); // true
console.log("1" === 1); // false
console.log("1" == true); // true ( boolean은 ==을 만나면 숫자값으로 형변환.)
console.log("1" == 1); // true ( "1" 은 1로 형변환.)
console.log("true" == 1); // false ("true"는 숫자 1로 형변환이 될수 없음.)
parseInt("true"); // NaN
parseInt(true); // parseInt에는 형변환 기능 없음 단순히 숫자로 변환하는 작업만을 함.
parseInt("123"); // 123
Boolean은 '=='을 만나면 형변환이 일어난다.
'=='는 형변환을 유발하며, '==='는 형변환을 유발하지 않는다.
따라서 '==' 보다는 '==='이것을 쓰는 것이 안전하다.
'Javascript' 카테고리의 다른 글
JavaScript 개발자가 알아야할 33개 컨셉 06.Scope (0) | 2019.12.01 |
---|---|
JavaScript 개발자가 알아야할 33개 컨셉 05.Typeof (0) | 2019.11.25 |
JavaScript 개발자가 알아야할 33개 컨셉 03.Value Types and Reference Types (0) | 2019.11.24 |
JavaScript 개발자가 알아야할 33개 컨셉 02.Primitive Types (0) | 2019.11.24 |
JavaScript 개발자가 알아야할 33개 컨셉 01.Call Stack (0) | 2019.11.24 |