最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript中数据类型检测方法的总结

来源:懂视网 责编:小采 时间:2020-11-27 20:24:08
文档

JavaScript中数据类型检测方法的总结

JavaScript中数据类型检测方法的总结:本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块。一、Js中有5种基本数据类型Undefined 、Null、Boolean、String、Number(包含NaN)NaN和任何类型的值都不相等,包括NaN;isNaN用来判断数值是不是NaN类型二、类型判断1. isFinite(n
推荐度:
导读JavaScript中数据类型检测方法的总结:本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块。一、Js中有5种基本数据类型Undefined 、Null、Boolean、String、Number(包含NaN)NaN和任何类型的值都不相等,包括NaN;isNaN用来判断数值是不是NaN类型二、类型判断1. isFinite(n

本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块。

一、Js中有5种基本数据类型

Undefined 、Null、Boolean、String、Number(包含NaN)

NaN和任何类型的值都不相等,包括NaN;isNaN用来判断数值是不是NaN类型

二、类型判断

1. isFinite(number)
是不是无穷大,如果不是返回true,如果是NaN,或者正负无穷大,或者非数字类型返回false

2. typeof运算符
使用的时候,空格或者typeof(param)

返回的值

string
number
boolean
undefined
function
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 string number boolean undefined function。

上面最后只剩下object,比如数组的识别,自定义类型的识别

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];
};

原生类型和自定义类型的object都可以判断了,于是

/**
 * 返回: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"

三、 其它

1. Dom元素判断
if(dom.nodeType){…Dom…}
if(dom.createElement)

2. jQuery等类型判断
$(‘#aa’) instanceof jQuery//不支持跨多窗口和框架子页面

3. if(a) a为null undefined 0 “” NaN时自动转换成false
一般推荐的写法

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

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

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

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

文档

JavaScript中数据类型检测方法的总结

JavaScript中数据类型检测方法的总结:本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块。一、Js中有5种基本数据类型Undefined 、Null、Boolean、String、Number(包含NaN)NaN和任何类型的值都不相等,包括NaN;isNaN用来判断数值是不是NaN类型二、类型判断1. isFinite(n
推荐度:
标签: 方法 检测 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top