보통 자바에서 parseInt 쓰던 습관으로 자바스크립트에서도
parseInt("10")
parseInt("10",10)
이렇게 쓰곤 하는데 만약 공백이 들어간다면 NaN 을 리턴해요.
-------------- 자바스크립트에서는 형변환 --------------
var a = "100"
var b = 5
a+b // "1005"
+a+b // 105
a-0+b // 105
+a, a-0 외에도 a*1 이런식으로 바꿔줄수가 있습니다.
만약 공백인경우에는 0을 리턴하구요.
parseInt 를 쓸때 진법을 명시안해주면 위와 같은 방법에 비해 속도가 매우 느리다고 합니다.
-------------- 비트연산 기호를 사용한 형변환 --------------
var seven = "07";
// 그냥 더하면 문자열 결합된다...
seven + 1; // "071"
// bitwise
~~seven + 1; // 8
(seven << 0) + 1; // 8
(seven >> 0) + 1; // 8
자바스크립트에서 비트연산을 하게 되면 언어 명세상 문자열을 Uint32 형으로 강제변환하기에 가능한 꼼수입니다.
이 방식은 더구나 속도도 빠른걸로 알고 있네요 :)
다만 문자열에 숫자가 아닌 문자가 있다면 결과값은 항상 0입니다; parseInt와는 다르게;;;
객체의 숫자형 변환도 가능한데 valueOf를 오버라이딩 해주시면 됩니다.
var obj = {
value: "백",
valueOf: function(){ return 100; }
};
obj - 1 // 99
http://stackoverflow.com/questions/10841204/vs-parseint
Using ~~x is often done because:
1. It's usually faster than calling a method.
2. It's faster to type than anything else.
3. It makes power users feel cool because it's sort of inscrutable and also sort of justifiable. :)
3번째 이유가 ㅋㅋ
'javascript/jquery' 카테고리의 다른 글
jquery selectbox(중요) (1) | 2013.08.06 |
---|---|
jQuery selector (0) | 2013.03.25 |