Maintainable JavaScript
p.129 null 비교 금지
null 값과 비교할 때는 반드시 비교 연산자로 === 또는 !==를 사용해야 한다.
실제 잘못 사용 예) 문자열이 IP 패턴을 하고 있는지 확인하는 함수
function isIPAddress(ip) {
var ipFormat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return (ip.match(ipFormat)!=null);
}
수정 예
function isIPAddress(ip) {
var ipFormat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
if (typeof ip === "string") {
return (ip.match(ipFormat)!==null);
} else {
return false;
}
}
수정1. match 함수를 사용한 다는 것은 String ip 변수가 타입이란 것을 가정하고 있기 때문에 typeof 연산자를 이용해 입력 값이 string 타입인지 체크를 하는 것을 추가 했다.
수정2. String.match 함수는 일치하면 객체를 넘겨주는데 일치하지 않을 경우 null을 넘겨준다. null과의 비교를 !=에서 !===로 수정했다.
'Programing > 웹' 카테고리의 다른 글
[JavaScript] 시각화(visualization) 라이브러리(그래픽, 차트 등) (2) | 2013.12.03 |
---|---|
[JavaScript] 부동소수점의 오류 예 (0) | 2013.10.28 |
[CSS] HTML5::Canvas 텍스트 흐림현상 (0) | 2013.01.26 |
[CSS] HTML&CSS 벤치마킹 (0) | 2012.12.23 |
[CSS] 블록엘리먼트 꽉차게 하기 (0) | 2012.12.04 |