1월, 2013의 게시물 표시

엄격한 자바스크립트

자바스크립트는 언어 특성상 동적 타입 언어에 속합니다. 타입이 정해서 있지 않기 때문에 장점도 많이 존재하긴 하지만 애플리케이션을 구성하는데 있어서는 약간 엄격한 필요성이 있습니다. 엄격함을 필요할 경우 구현 시에 function a(b, c) {   if(typeof b !=...) throw new Error();   if(typeof c !=...) throw new Error();   ... } 형태로 많이 구현하고 있습니다. 이런 형태로 구현하면 인자값에 대한 타입을 정의하여 함수가 오동작하는것을 미리 방지할수 있습니다. 이런 형태로 인자값에 대해서는 좀더 엄격한 타입을 정할수 있으나 반환값 적용할 수 있을까요? 이러한 물음을 가지고 여러 실험을 해보았습니다. 그러던중 클로저로 함수를 랩핑하면 어떨까에 대해서 생각이 들었습니다. 여기에다가 그에 관한 내용을 적습니다. 만일 반환값이 반드시 boolean이여야 한다면!! function is(fn) { return function (){return !!fn.apply(this,arguments)}} 대부분 프로그래밍에서 is나 has로 시작하는 함수는 boolean을 반환해야 한다고 합니다. 그래서 위에 형태로 껍데기를 만들고 var isNum = is(function (value) { return /^\d+$/.test(value) }); 이런식으로 정의하면 이 함수는 반드시 boolean을 반환합니다. 이렇게 보통 java나 다른 언어에서 boolean and (boolean, boolean c) {   return b&&c; } 이런거에서 var isAnd = is(function (a, b){ return a&&b } ); 이런식으로 정의하면 됩니다. 이런식으로 사용하면 Number, String등 기본 내장 클래스 객체로 반드시 반환하게 할수도 있으면 사용자 클래스 객체를 반환하게 할수도 있습니다.