[JS] JavaScript 코딩팁
그 동안 잘 써오던 팁인데 의외로 잘 안쓰시는 것 같아서 공유하고자 합니다. ^^
1. 문자열을 숫자로…
보통 이 경우에는 parseInt 메소드를 많이 이용합니다만, 언어의 특성을 이용한다면 간단히 해결할 수 있습니다.
var str = "100";
- parseInt : parseInt(str) // 결과는 100
- + : +str // 결과는 100, 단 앞에 아무런 값이나 변수가 없어야 함
- - 0 : str-0 // 결과는 100
var str = "010";
- parseInt : parseInt(str) // 결과는 8
- + : +str // 결과는 10
- - 0 : str-0 // 결과는 10
위 결과에서 str 앞에 0이 있기 때문에 parseInt 함수는 이를 8진수 10으로 해석하게 됩니다. 이 문제를 해결하려면 parseInt 의 두 번째 인자로 지수값 즉 여기서는 10을 넘겨주면 됩니다.
2. Boolean 값으로 타입 변환
JavaScript 에는 Bool 로 인정되는 몇몇 값들이 있습니다. 이들 값들은 if 문이나 삼항비교문에서도 역시 bool 값으로 인정됩니다만, 그렇다고 이들이 실제로 boolean 값인 것은 아니라서 boolean 값 자체가 필요할 때는 보통 다음과 같이 변환을 하시더군요.
var nVal = 2; var bVal = nVal?true:false;
하지만 다음과 같은 방식으로 타입캐스팅을 한다면 보다 간편하게 할 수 있습니다.
bVal = !!nVal;
물론, 문자열, Object, null, undefined 등에서도 동일한 방법으로 사용할 수 있습니다.
3. 변수에 값 입력하면서 사용하기
스크립트 계열의 언어에 대한 경험이 부족한 분들은 잘 사용하지 않는 방법인 것 같습니다. PHP 등에서도 가능하지만 함수형 언어의 특징을 지닌 JavaScript에서는 보다 재밌게 사용할 수 있습니다.
var obj = null; if ( (obj = getObject()) && obj.apply(1234) ) { ... }
위 코드는 obj 가 존재하는지 안하는지에 대한 검사를 먼저 수행하고 obj가 있다면 obj.apply 메소드를 실행해서 결과값을 체크하는 조건을 수행하고 있습니다. 여러줄에 걸쳐쓰는 것보다 코드를 보다 깔끔하게 만들 수 있어 애용하는 방법입니다. ^^ 보다 다양한 조건식을 체크하는 것도 가능합니다.
4. 함수 자기자신을 대체하기
JavaScript 라는 언어는 몹시도 유연한 언어라서 함수나 메소드를 언제든 재정의 할 수 있습니다. 심지어 내장 메소드 마저도 가능하니 말 다했죠. ^^; 이런 특성을 이용해서 다음과 같이 응용해볼 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function g_getSelection() { if (window.getSelection) { window.g_getSelection = function(){ return window.getSelection(); }; } else if (document.selection) { window.g_getSelection = function(){ return document.selection; }; } else { window.g_getSelection = function() { alert("이 브라우저는 셀렉션을 지원하지 않습니다.") }; } return g_getSelection(); } |
이렇게 작성해두면 최초에 실행될 때를 제외하면 해당 함수는 더 이상 비교구문을 거치지 않는 브라우저별 전용함수가 될 수 있습니다.
5. false 혹은 그에 준하는 값이 아닌 값만 받기
var someValue = v || a || r;
v, a, r 중에서 false 나 그에 준하는 값이 아닌 값을 전달 받습니다. 만약 v 가 문자열 “” 이고 a 가 숫자 8 이라면 someValue 의 값은 a의 값, 즉 숫자 8이 됩니다. 괄호를 묶는 코드와는 엄청난 차이가 있음에 주의하세요!
var someValue = (v || a || r); // 리턴값은 항상 true/false
#끝~
분명 알고 계신 것도 있고 또 일부는 모르고 계신 분도 계셨을 겁니다. 작은 팁이지만 참고하셔서 도움이 되었으면 좋겠습니다. ^^


