>  기사  >  웹 프론트엔드  >  JavaScript의 데이터 유형 감지 방법 요약

JavaScript의 데이터 유형 감지 방법 요약

黄舟
黄舟원래의
2017-03-14 15:08:541104검색

이 글에는 Js 지식 시스템 구축의 작은 부분인 일반적인 Js 유형 감지 방법이 나열되어 있습니다.

1. Js에는

Undefine,

Null, Boolean, String, Number( NaN 포함)

NaN은 NaN을 포함한 모든 유형의 값과 동일하지 않습니다. isNaN은 값이 NaN 유형인지 확인하는 데 사용됩니다.

2. 유형 판단

1. isFinite는 (숫자)

무한대입니까? 그렇지 않은 경우, NaN이거나 양수 또는 음수 무한대이거나 숫자가 아닌 유형인 경우 false

연산자를 반환합니다.

사용 시 공백 또는 typeof(param)
반환 값

문자열

숫자

부울
정의되지 않음
함수

object
null도 object를 반환합니다위 내용을 토대로 판단 유형은 다음과 같습니다.

var obtainType = function(o){
     var t;
     if(o === null ) return “null”;
     else if(o !== o) return “NaN”;
     else if( (t = typeof o) !== ‘object’) return t;
}

는 null 및 NaN 문자열 번호 부울 정의되지 않은 함수를 식별할 수 있습니다.

배열식별

, Custom Type식별등 결국 객체만 남음3. 사용

function obtainType(type) {
    return function (obj) {
        return Object.prototype.toString.call(obj) === "[object " + type + "]"
    }
}

var isObject = isType("Object")
var isString = isType("String")
var isArray = Array.isArray || isType("Array")
var isFunction = isType("Function")

4.커스텀 타입 판단

/**
 * 返回函数的名字,可能为空串;不是函数,返回null
 */
Function.prototype.getName = function () {
    if ("name" in this) return this.name;
    return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];
};

네이티브 타입과 커스텀 타입 객체 모두 판단이 가능하므로

/**
 * 返回:null NaN undefined string number boolean
 * function Array String Object(包括一些自定义类型) 自定义类型
 */
var obtainType =function(o){
    /**
     * 获取参数类型
     * 对象直接量、Object.create、自定义构造函数的类属性皆为Object;
     * 识别出原生类型 (内置构造函数和宿主对象)
     */
    function classOf(obj){
        return Object.prototype.toString.call(obj).slice(8, -1);
    }

    /**
     * 返回函数的名字,可能为空串;不是函数,返回null
     */
    Function.prototype.getName = function () {
        if ("name" in this) return this.name;
        return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];
    };
    var t, c, n;
    // 处理null值特殊情形
    if (o === null) return "null";
    // NaN:和自身值不相等
    if (o !== o) return "NaN";
    // 识别出原生值类型和函数、undefined
    if ((t = typeof o) !== "object") return t;
    // 识别出原生类型
    if ((c = classOf(o)) !== "Object") return c;
    // 返回自定义类型构造函数名字
    if (o.constructor && typeof o.constructor === "function" &&
        (n = o.constructor.getName()))
        return n;
    return "Object";
};

5.

var strObj = new String('abc');

typeof strObj // "object"

obtainType(strObj) // "String"

3.

기타

1. Dom 요소 판단

if(dom.nodeType){…Dom…}

if(dom.createElement)

2. 🎜 >jQuery

및 기타 유형 판단

$('#aa') jQuery//여러 창 및 프레임워크하위 페이지
확장을 지원하지 않습니다. if(a ) a null undefine 0 "" NaN일 경우 자동으로 false로 변환일반적으로 권장하는 작성방법

// bad
if (name !== '') {
    // ...stuff...
}

// good
if (name) {
    // ...stuff...
}

// bad
if (collection.length > 0) {
    // ...stuff...
}

// good
if (collection.length) {
    // ...stuff...
}


위 내용은 JavaScript의 데이터 유형 감지 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.