티스토리 뷰
2.7 Type conversions
String Conversion
String 변환은 String(value)으로 할 수 있음.
Numeric Conversion
Number("123") 방식으로 변환이 가능하다. true는 1로 false는 0으로 변환된다.
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
Boolean Conversion
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
"0"을 boolean 타입으로 변환했을 때는 number 타입과 달리 true로 변환되는 것을 기억하자.
2.8 Basic operators, maths
대부분 Java에서의 연산자와 비슷하다. 연산자 우선순위 표는 기억해 두는 것이 좋겠다.
"=" 연산의 경우 아래 방식으로도 쓰일 수 있다.
let a = 1;
let b = 2;
let c = 3 - (a = b + 1);
alert( a ); // 3
alert( c ); // 0
콤마 연산의 경우 좀 특이했는데, 콤마 앞의 첫 번째 연산이 무시되고 뒤에 나오는 연산이 반환된다. 잘 쓰이지는 않는다고 한다.
let a = (1 + 2, 3 + 4);
alert( a ); // 7 (the result of 3 + 4)
2.9 Comparison
대부분 Java와 비슷한데, 다른 유형 간에 비교를 할 때는 결괏값을 숫자로 변환해서 반환한다.
alert( '2' > 1 ); // true, string '2' becomes a number 2
alert( '01' == 1 ); // true, string '01' becomes a number 1
boolean의 경우 true, false로 반환한다. 다소 특이한 케이스로는, 앞서 0과 "0"을 boolean 타입으로 변환했을 때 각각 다른 결과를 반환했는데 둘을 동등비교를 하면 true를 반환한다.
let a = 0;
alert( Boolean(a) ); // false
let b = "0";
alert( Boolean(b) ); // true
alert(a == b); // true!
Strict equality
'==' 연산자의 경우 타입이 달라도 true 반환하는 경우가 있다. == 연산자를 통해 타입이 변환되면서 비교하기 때문인데,
alert( 0 == false ); // true
alert( '' == false ); // true
'===' 엄격한 비교 연산자는 타입 변환을 하지 않고 바로 결과를 반환한다.
alert( 0 === false ); // false, because the types are different
그 외 특이한 케이스들..
alert( null === undefined ); // false
alert( null == undefined ); // true
null은 0보다 크거나 같다로 명시한다.
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
(1), (2)의 경우 undefined로 변환하면 NaN 이기 때문에 false를 반환한다.
(3)의 경우 undefined == null 비교는 true를 반환하기 때문에, undefined를 0과 비교할 때에는 사실상 null과 비교하는 것과 같다. 따라서, false를 반환한다.
null / undefined 비교를 잘 기억하고 해당 값이 나올 수 있는 변수의 경우 비교할 때 주의해야할 것 같다. 아마 validation을 먼저 한 뒤 비교를 하게 되지 않을까?
'스터디 > JavaScript' 카테고리의 다른 글
모던 자바스크립트 튜토리얼 part1 - 4.1 (0) | 2024.05.14 |
---|---|
모던 자바스크립트 튜토리얼 part1 - 2.15 ~ 17 (0) | 2024.05.14 |
모던 자바스크립트 튜토리얼 part1 - 2.12 ~ 14 (0) | 2024.05.13 |
모던 자바스크립트 튜토리얼 part1 - 2.5 (0) | 2024.05.13 |
모던 자바스크립트 튜토리얼 part 1 - 2.1 ~ 2.4 (0) | 2024.05.13 |