各种数据类型的判断方法

  在编程过程中,经常需要判断某种是否是某种数据类型,或者某种数据类型是否为空。方法很多,也比较容易记混乱,这篇文章也是给自己理理思路,把各种判断的方法总结下。
  首先,在js中有5种基本类型:Number String undefined Null Boolean 和一种引用类型 Object, 在引用类型中又可分为 Array数组,Function函数,Object对象,Date,RegExp 类型。

typeof 操作符

typeof 操作符用来检测基本数据类型是没有问题的,除了null ,typeof null === ‘object’ ,比如需要判断一个数是否为数字,只需要这样比较:

1234
if(typeof 3 === 'number'){

}// 不是数字

对于各种类型 typeof 的比较值:

123456
typeof 3 // "number"typeof "abc" // "string"typeof {} // "object"typeof true // "boolean"typeof undefined // "undefined"typeof function(){} // "function"

instanceof 操作符

instanceof是通过原型链来检查类型的,所以适用于任何”object”的类型检查。

12345678
// 比如直接原型关系function (){ }(new Animal) instanceof Animal     // true

// 原型链上的间接原型function Cat(){}Cat.prototype = new Animal(new Cat) instanceof Animal         // true

instanceof 不能检测基本数据类型。

Object.prototype.toString

是最为可靠的类型检测手段,它会将当前对象转换为字符串并输出。Object.prototype.toString也不是完美的,它无法检测用户自定义类型。 因为Object.prototype是不知道用户会创造什么类型的, 它只能检测ECMA标准中的那些内置类型。

12大专栏  各种数据类型的判断方法>345678910
Object.prototype.toString.call(new Date);    // [object Date]Object.prototype.toString.call(new String);  // [object String]Object.prototype.toString.call(Math);        // [object Math]Object.prototype.toString.call(3);           // [object Number]Object.prototype.toString.call([]);          // [object Array]Object.prototype.toString.call({});          // [object Object]

// Since JavaScript 1.8.5Object.prototype.toString.call(undefined);   // [object Undefined]Object.prototype.toString.call(null);        // [object Null]

类型检测总结

==typeof==只能检测基本数据类型,对于null还有Bug;
==instanceof==适用于检测对象,它是基于原型链运作的;
==constructor==指向的是最初创建者,而且容易伪造,不适合做类型判断;
==Object.prototype.toString==适用于ECMA内置JavaScript类型(包括基本数据类型和内置对象)的类型判断;
基于引用判等的类型检查都有跨窗口问题,比如instanceof和constructor。
总之,如果你要判断的是基本数据类型或JavaScript内置对象,使用toString; 如果要判断的时自定义类型,请使用instanceof。

数组是否为空

这个可以通过判断数组的长度来进行判断,空数组的长度为0,但是有一种情况是:如果数组的key为字符串时,.length返回的也是0

1234
var s = [];s['job'] = '程序员';s['name'] = '张三';alert(s.length);   //0

but,应该不会出现这种情况。一般都作为对象了。

对象是否为空

这里借鉴一个jquery钟的 isEmptyObject 方法:遍历对象,如果不为空 则返回 false ,为空则返回true。

1234567
function isEmptyObject(e) {      var t;      for (t in e)  {        return false;  		}    return true  }

原文地址:https://www.cnblogs.com/lijianming180/p/12251224.html

时间: 2024-10-07 05:46:27

各种数据类型的判断方法的相关文章

js基本数据类型及判断方法

判断对象是否为空? Js代码 if (typeof myObj == "undefined") { var myObj = { }; } //这是目前使用最广泛的判断javascript对象是否存在的方法. 一.基本数据类型 js一共有六种数据类型:五种简单数据类型和一种复杂数据类型: 五种简单数据类型包括:String.Number.Boolean.undefined.Null 一种复杂数据类型:obeject 自己总结: 1,几种false undefined,null,空字符串,

细数判断数据类型的各种方法

数据类型的分类 要想判断数据类型,首先要知道数据类型的分类.数据类型分为基本数据类型和引用数据类型. 基本数据类型 基本数据类型有 五 种,ES6中新加了第 六 种基本数据类型--Symbol 类型. 数值 (number): 整数和小数. 字符串 (string): 文本 布尔值 (boolean):true 和 false . undefined: 表示'未定义'或不存在.一般情况下变量在声明后未赋值前都是undefined. null: 空值. symbol: ES6 引入的新原始数据类型

python常用数据类型内置方法介绍

熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 一.整型 a = 100 a.xxx() class int(object): def bit_length(self): ##如果将某个整数用2进制表示,返回这个2进制所占bit位数. return 0 def conjugate(self, *args, **kwargs): ##共轭复数 @classmethod # known case def from_bytes(cls, bytes, byteorder, *ar

Python爬虫总结(二)常见数据类型及其解析方法

Python爬虫总结(二)常见数据类型 上一篇我们简单介绍了如何用Python发送 http/https 请求获取网上数据,从web上采集回来的数据的数据类型有很多种,主要有: 放在HTML里. 直接放在javascript里. 放在JSON里. 放在XML里. 注意:这里很多概念都是web前端开发里的,因为我们采集的大多数数据都来自web,因此了解一些前端知识还是挺有必要的. 下面我简单介绍下各种数据类型,并结合一些实例介绍它们的解析方法. 数据类型 放在HTML里 HTML即超文本标记语言,

javascript数据类型的判断

最近看到了很多关于数据类型判断的方法,总结了下 一.javascript的数据类型 js数据分为两种类型:原始数据类型和引用数据类型.原始数据类型有:string.number.boolean.undefined和null引用数据类型有:Function.Object.Date.RegExp.Number.String.Boolean和自定义类等 其中原始数据类型也称基础数据类型,是不可拆分的数据类型,他存在于栈中:而引用数据类型也是通常意义上所说的类,存在于堆中.这两者的一个重要的区别在于原始

鉴别JS数据类型的全套方法

ECMAScript 标准定义了 7 种数据类型:Boolean.Null.Undefined.Number.String.Symbol(ES6新增)和Object,除Object以外的那6种数据类型也被称为基本数据类型,另外还有Array.Function等复杂数据类型.本文介绍一般类型判断方法,最后总给一套全面的数据类型判断方法. 一.typeof typeof是一个一元运算符(不是一个函数方法),可以鉴别null以外的基本数据类型以及Object和Function.它的返回值是小写的字符串

Javascript中数组的判断方法

摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.isArray(). 以上为数组检测的方法,但是这些方法中: Array.isArray()方法是最为简单方便的方法,但是存在版本支持性问题,没有版本支持性问题且较好的检测方法是使用Object.prototype.toString结合call()方法来检查,通常数组检测中我们常用的做法是两种方法结合

Go 语言中数据类型的判断

Go 语言中数据类型的判断,本文介绍三种方法.方法一:使用i.(type)结合空接口(interface{}) func main() { v1 := "中国你好" v2 := 20 var v3 byte = 65 fmt.Printf("v1的数据类型为:%s\n", checkType(v1)) fmt.Printf("v2的数据类型为:%s\n", checkType(v2)) fmt.Printf("v3的数据类型为:%s\n

js数据类型的判断

判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype,接下来主要比较一下这几种方法的异同 下面先准备几个例子: var a = "iamstring."; var b = 222; var c= [1,2,3]; var d = new Date();var e = {a:1,b:2}; var f = function(){alert(111);}; 1.常用的类型判断方法:typeof console.log(typ