javascript/jquery2013. 8. 14. 16:40

보통 자바에서 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
Posted by 유기농농부