> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 각 변수의 유형을 확인하는 방법

JavaScript에서 각 변수의 유형을 확인하는 방법

黄舟
풀어 주다: 2016-12-20 15:34:56
원래의
1093명이 탐색했습니다.

우리는 아름다운 코드에 쉽게 매료되어 자신도 모르게 코드 베이스에 추가합니다. 그러나 나는 그들의 장점과 단점에 대해 침착하게 생각하지 않았습니다. 아니, "그게...?"라는 형태로 판단할 수 있는 부울 함수들을 모아봤습니다.

isNull: function(a){
    return a === null;
},
isUndefined: function(a){
    return a === undefined;
},
isNumber: function(a){
    return typeof a === 'number';
},
isString: function(a){
    return typeof a === 'string';
},
isBoolean: function(a){
    return typeof a === 'boolean';
},
isPrimitive: function(b){
    var a = typeof b;
    return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string');       
},
isArray: function(a){
    return proto_obj.toString.call(a) === '[object Array]';
},
isFunction: function(a){
    return proto_obj.toString.call(a) === '[object Function]';
},
isPlainObject: function(o){
    if (!o || o === win || o === doc || o === doc.body) {
        return false;
    }
    return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]';        
},
isWindow: function(o){
    return o && typeof o === 'object' && 'setInterval' in o;
},
isEmptyObject: function(o){
    for(var a in o) {
    return false;
    }
    return true;
}
로그인 후 복사

위의 isXX 시리즈 중 클래스 라이브러리에서 isUndefine이 가장 많이 사용됩니다. 예를 들어, 특정 매개변수가 전달되었는지 확인하고, 객체에 특정 속성이 있는지 확인하는 등의 작업을 수행합니다. 하지만 이 기능이 꼭 존재할 필요는 없으므로 제거했습니다. 그 이유는 다음과 같습니다.

isUndefine과 합동(===) 또는 typeof를 사용하여 함수 호출 계층을 하나 더 추가합니다. 분명히, 함수 호출을 한 단계 더 추가하는 것은 기본 연산자를 직접 사용하는 것보다 덜 효율적이지만(다소 사소하기는 하지만) isUndefed가 수만 번과 같이 여러 번 호출되는지는 여전히 분명합니다. 한번은 이 함수를 메일박스 프레임워크에 추가했는데, 성능 분석 도구에 따르면 4,000번 이상 호출되는 데 거의 1%의 시간이 걸렸습니다. 통화 시간의 1%를 차지하는 단 한 번의 판단만으로도 여전히 끔찍합니다. 물론 메일함 프레임워크의 isUndefine은 다중 계층 폐쇄의 최상위에 있으며 이에 액세스하는 데에도 시간이 더 걸립니다. 이것이 isUndefine을 포기할 정도로 충분하지 않다면 아래를 참조하세요.

함수는 일부 코드를 어느 정도 캡슐화하고 추상화합니다. 이는 좋은 코드를 구성하는 방법 중 하나이며 코드의 복잡성을 줄이는 데 도움이 됩니다. 그러나 isNull/isUndefine/isBoolean/isNumber/isString 함수에는 문장이 하나만 있고 추상화 수준이 매우 낮습니다. 따라서 함수를 캡슐화하고 추출할 필요가 없습니다.

isUndefine(a)은 === undef에 비해 몇 바이트를 절약하지 못합니다(헤헤, 이름을 더 짧게 만들 수는 있지만 가독성이 떨어집니다).

요약하자면, 클래스 라이브러리에서 기본 유형 판단을 위해 isNull/isUndefine/isBoolean/isNumber/isString을 제거했습니다. 이러한 판단이 필요한 경우에는 typeof 연산자가 직접 사용됩니다.

위 내용은 JavaScript의 변수 종류별 판단방법에 대한 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿