如何判断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()等
如何判断JavaScript数据具体类型的更多相关文章
- Token验证的流程及如何准确的判断一个数据的类型
Token验证的流程: 1,客户端使用用户名跟密码请求登录:2,服务端收到请求,去验证用户名与密码:3,验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端:4,客户端收到 T ...
- javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)
function isArray(o) { return Object.prototype.toString.apply(o) === “[object Array]”;}function isFun ...
- js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)
function getDataType(any){ /* (1) Object.prototype.toString.call 方法判断类型: 优点:通用,返回"[object Strin ...
- 判断javaScript变量是Ojbect类型还是Array类型
JavaScript是弱类型的语言,所以对变量的类型并没有强制控制类型.所以声明的变量可能会成为其他类型的变量, 所以在使用中经常会去判断变量的实际类型. 对于一般的变量我们会使用typeof来判 ...
- [Javascript]js判断是否为undefined类型
概述 在项目获取某个元素的值会出现undefined,所以对这种情况要有特殊处理. 可通过下面的代码判断是否为undefined类型. if (typeof(reValue) == "und ...
- Javascript学习1 - Javascript中的类型对象
原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...
- javascript 中的类型
javascript 中的类型 js 是一门弱语言,各式各样的错误多种多样,特别是确定返回值有问题的时候,你会用什么来进行表示错误? 我一般有三个选择: null '' error {} 第一个选择 ...
- javascript学习-基本类型
javascript学习-基本类型 1.概述 javascript的数据类型大体上分两种:基本类型和对象类型.简单的区分就是基本类型是无法再分的原子级类型:对象类型是容器,可以容纳基本类型和对象类型. ...
- JavaScript数据检测
前言: 随着编程实践的增加,慢慢发现关于数据类型的检测至关重要.我认为程序就是为了处理数据和展示数据.所以,数据的检测对于编程来说也至关重要.因为只有符合我们预期的输入,才可能产生正确的输出.众所周知 ...
随机推荐
- ASP.NET MVC ActionMethodSelectorAttribute 以及HttpGet等Action特性
一.ActionMethodSelectorAttribute 其是一个抽象类,继承自Attribute,子类有NonActionAttribute.HttpGetAttribute.HttpPost ...
- 5.css背景以及书写位置
1.样式表书写位置 ◆内嵌式写法 <head> <style type=”text/css”> 样式表写法 </style> </head> 2.◆外链 ...
- 微赞微擎V0.8以上版本:【数据库读写分离】实战教程 [复制链接]
http://www.efwww.com/forum.php?mod=viewthread&tid=4870 马上注册,下载更多源码,让你轻松玩转微信公众平台. 您需要 登录 才可以下载或查看 ...
- adb错误 - INSTALL_FAILED_NO_MATCHING_ABIS
#背景 换组啦,去了UC国际浏览器,被拥抱变化了.还在熟悉阶段,尝试了下adb,然后就碰到了这个INSTALL_FAILED_NO_MATCHING_ABIS的坑... #解决方法 INSTALL_F ...
- SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
二.完整的锁兼容性矩阵(见下图) 对上图的是代码说明:见下图. 三.下表列出了数据库引擎可以锁定的资源. 名称 资源 缩写 编码 呈现锁定时,描述该资源的方式 说明 数据行 RID RID 9 文件编 ...
- windform 重绘Treeview "+-"号图标
模仿wind系统界面,重绘Treeview + - 号图标 一,首先需要图片 ,用于替换原有的 +-号 二.新建Tree扩展类 TreeViewEx继承TreeView using System; u ...
- [C++基础]队列<queue>中的常用函数
在C++中只要#include<queue>即可使用队列类,其中在面试或笔试中常用的成员函数如下(按照最常用到不常用的顺序) 1. push 2. pop 3. size 4. empty ...
- Python 生成器, 迭代器, 可迭代对象的区别
1.可迭代对象 在python中, 一切皆对象, 但凡是可以用for循环进行遍历取值的对象都可以称之为可迭代对象, 可迭代对象在程序的一个执行周期中,可以无限轮次的进行循环遍历 2.迭代器 a.一个可 ...
- <转>php中heredoc与nowdoc的使用方法
http://www.361way.com/php-heredoc-nowdoc/3008.html 一.heredoc结构及用法 Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 ...
- Swift5 语言指南(二十二) 扩展
扩展为现有的类,结构,枚举或协议类型添加新功能.这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模).扩展类似于Objective-C中的类别.(与Objective-C类别不同,Swift扩展 ...