如何判断JavaScript数据具体类型

昨晚做了阿里的题目,让我写一个函数,可以判断数据的具体类型。其实题目很简单的。。。但是真的是自己不太注意吧,写的很糟糕啊。

然后今天就自己写了一个,然后又到晚上搜了下,看看别人的写法,结果发现自己有点思维受限啊,不够开阔啊,那些方法其实都是见过的,可能是自己没有梳理过,或者认真对待。今天就把这些方法整理一下。

1、基本数据类型采用typeof,这个返回的都是很准的。

var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var e = function(){alert(111);};
var f = function(){this.name="22";};

alert(typeof a)   ------------> string
alert(typeof b)   ------------> number
alert(typeof c)   ------------> object//数组是引用类型的
alert(typeof f)   ------------> function
alert(typeof e)   ------------> function

2、引用类型采用instanceof, 主要针对的是采用new 实例化的对象。

var a = new String("iamstring.");
var b = new Number(222);
var c = new Array(222,2,4);
var e = function(){console.log(111);};
var f = function(){this.name="22";};
var f = function(){this.name="22";};
var h = new Error("foo");

console.log(a instanceof String)    //true
console.log(b instanceof Number)    //true
console.log(c instanceof Array)     //true
console.log(e instanceof Function)  //true
console.log(f instanceof Function)  //true
console.log(h instanceof Error)     //true  

3、根据constructor来判断

其中a-h跟上面的一样,就不重复定义了,注意不带引号的,是要大写

var i="str", arr=[1], num=1;
console.log(a.constructor=== String)    //true
console.log(b.constructor=== Number)    //true
console.log(c.constructor=== Array)     //true
console.log(e.constructor=== Function)  //true
console.log(f.constructor=== Function)  //true
console.log(h.constructor===Error)      //true
console.log(i.constructor===String)     //true
console.log(num.constructor=== Number)    //true
console.log(arr.constructor=== Array)     //true 

4、toString()方法,这是最通用的,大小写不能写错,有点麻烦

console.log(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;

console.log(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;

console.log(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;

console.log(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;

console.log(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;

console.log(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;

5、可以采用一些某些数据类型采用的方法

比如:string 类型的 replace

regexp类型的test, exec

数组还有一种判断方法:Array.isArray()

date 类型的 getMonth()等

时间: 2024-08-05 11:15:36

如何判断JavaScript数据具体类型的相关文章

javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)

function isArray(o) { return Object.prototype.toString.apply(o) === “[object Array]”;}function isFunction(o) { return Object.prototype.toString.apply(o) === ”[object Function]“;} --JQuery  源码有....

判断JavaScript值的类型可以用typeof和instanceof

var a = 3; typeof a; //number //typeof null返回是Object,这是一个历史原因,所以typeof无法安全判断引用类型 //mdn的说法是instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置,直白的说是使用instanceof就是判断一个实例是否属于某种类型(instanceof检测对象的原型链) var Po = function(){} var pww = new Po(); pww instanceo

js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)

function getDataType(any){ /* (1) Object.prototype.toString.call 方法判断类型: 优点:通用,返回"[object String]" 具体object的类型 缺点:不能返回继承的类型 (2)typeof x 缺点:对object类型不能细分: 优点:对空null的判断 'undefined'的应用; 返回类型有:'undefined' "string" 'number' 'boolean' 'funct

JavaScript如何判断文件上传类型 实例分享

分享下JavaScript判断文件上传类型的方法,可针对重复的内容触发onchange事件. JavaScript判断文件上传类型的方法:文件上传时用到一个功能,使用html元素的input标签实现: <input id="imageFile" name="imageFile1" accept="image/jpg,image/jpeg,image/png,image/bmp,image/gif" type="file"

JavaScript 学习笔记— —类型判断

//1 判断是否为数组类型 var a=[0]; console.log(isArray(a)); function isArray(obj){ return (typeof obj=='object') && obj.constructor==Array; } console.log("2-----------------------------------") //2 判断是否为字符串类型 console.log(isString('test')); console

[Javascript]js判断是否为undefined类型

概述 在项目获取某个元素的值会出现undefined,所以对这种情况要有特殊处理. 可通过下面的代码判断是否为undefined类型. 1 if (typeof(reValue) == "undefined") { 2 alert("undefined"); 3 } 4 5 typeof 返回的是字符串,有六种可能:"number"."string"."boolean"."object"

typeof + instanceof+toString+constructor是如何判断javascript数据类型的

一.typeof JS中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值: 1. 'undefined' --- 这个值未定义: 2. 'boolean' --- 这个值是布尔值: 3. 'string' --- 这个值是字符串: 4. 'number' --- 这个值是数值: 5. 'object' --- 这个值是对象或null: 6. 'function' --- 这个值是函数. 测试: document.write(

JavaScript数据检测

前言:随着编程实践的增加,慢慢发现关于数据类型的检测至关重要.我认为程序就是为了处理数据和展示数据.所以,数据的检测对于编程来说也至关重要.因为只有符合我们预期的输入,才可能产生正确的输出.众所周知,JavaScript是弱类型语言,这带来很多便利的同时,也带来了不少问题.为了减少编程实践中在变量判断方面出现的问题,我们需要对不确定的变量进行检测,以保证处理符合预期的数据.本文是对数据检测的总结. 1.检测原始值 ECMAScript 有 5 种原始类型(primitive type),即 Un

Javascript数据类型&mdash;&mdash;number类型

        ECMAScript规范中使用IEEE754格式来表示整数和浮点数.支持十进制.八进制以及十六进制.有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行. 避免浮点数等值判断:       众所周知,基于IEEE754进行数据计算会产生舍入误差,最为经典的例子: 0.1+0.2 = 0.30000000000000004 ; 0.15+0.15 = 0.3;        在实际开发中应尽量避免使用浮点数的等值判断. NaN:      关于NaN有两点特别