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

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

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()等

转载于:https://www.cnblogs.com/huansky/p/5853299.html

如何判断JavaScript数据具体类型相关推荐

  1. 如何准确的判断一个数据的类型

    如何准确的判断一个数据的类型(使用Object.prototype.toString.call()) 1.typeof:只能判断基本数据类型,不能判断引用数据类型,判断出来的都是Object 2.in ...

  2. 【原生】封装一个判断数据类型的函数的方法,准确判断一个数据的类型

    // 判断一个数据类型的函数封装的方法,obj是用来接收传入的参数的function gettype(obj) {var type = typeof obj;if (type !== 'object' ...

  3. JavaScript高级day01-AM【WebStrom安装、数据类型分类及判断、数据-内存-变量、引用变量赋值、对象的组成】

    笔记.视频.源码:JavaScript(基础.高级)笔记汇总表[尚硅谷JavaScript全套教程完整版] 目   录 P1 01.尚硅谷_JS高级_准备 07:07 WebStrom 下载及安装 1 ...

  4. C语言文件操作——数据文件类型、文件判断、文件缓冲区详解

    之前,我讲解了文件操作的三大步骤,讲解了文件读写的各类函数和使用方法,今天,还是来和大家聊一聊文件操作剩余的一些知识点. 一.数据文件类型 之前我讲到过文件按照功能类型分为程序文件和数据文件两大类,我 ...

  5. 如何处理javascript中var类型有效数据极限值问题(超大数据)

    最近在做web项目中遇到一个从来未遇到的问题,这个问题相信做为web开发的程序员来说遇到的可能性比较小!那么这个问题是怎么样出现的呢?我们有该如何解决这个问题呢? 由于javascript是弱类型语言 ...

  6. html file验证文件是否上传,JavaScript判断文件上传类型的方法

    本文实例展示了JavaScript判断文件上传类型的方法,是一个非常常用的技巧.具体实现方法如下: 文件上传时用到一个功能,使用html元素的input标签实现: 选中图片后立即触发onchange事 ...

  7. JavaScript 学习笔记— —类型判断

    //1 判断是否为数组类型var a=[0];console.log(isArray(a));function isArray(obj){return (typeof obj=='object') & ...

  8. 理解JavaScript的原始类型

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的原始类型(primitive type)包括Undefined.Null.Number.Boolean ...

  9. JavaScript的变量类型

    JavaScript的变量类型 JavaScript的数据类型分为两种: (1)值类型(基本数据类型):字符串(String).数字(Number).布尔(Boolean).未定义(Undefined ...

最新文章

  1. Redis第三集:redis-benchmark性能测试
  2. vectorvn1610报价_【8.5873.5444.G323】价格_厂家 - 中国供应商
  3. java-HashSet源码学习
  4. JQUERY —— 元素及表单操作
  5. 在Ubuntu上安装RealPlayer的方法
  6. python快速入门课堂笔记_Python 快速入门笔记(9):模块和包
  7. 在C#中实现托盘是多么简单
  8. 洛谷2486 【SDOI2011】染色(线段树+树链剖分)
  9. 计算机网络复习-互联网概述
  10. H5 下载文件到本地
  11. 如何强制卸载Google浏览器,不用担心Google打开为白板,亲测有效。
  12. 7.STC15W408AS单片机串口通信
  13. nginx上传文件大小报错500的解决办法
  14. SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
  15. ns注册改服务器,NameSilo域名更改NS服务器简单过程介绍
  16. yii2-imagine 使用方法
  17. 【华为OD机试 2023最新 】 最短木板长度(C++ 100%)
  18. 【PBR系列三】BRDF方程及渲染方程
  19. nf_conntrack_in(kernel4.14)
  20. 《互联网保险业务监管暂行办法》

热门文章

  1. java 输出一个爱心_java基础 之 几个常用的类
  2. public class c中_Spring中@Import的各种用法以及ImportAware接口
  3. 计算机网络技术实验,计算机网络技术实验一
  4. 压电式加速计matlab,低频压电加速度传感器的噪声特性及信号处理方法研究
  5. html的各种基本标签 fylong,HTML:text标签不工作
  6. android rss_Android RSS阅读器应用程序
  7. js模块封装示例_AngularJS模块教程示例
  8. Total Commander通过CTRL+B调用git-base.exe
  9. linux系统数据文件和信息--unix环境高级编程读书笔记
  10. 使用zk可以实现Master选举,实现原理是什么?