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

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

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数据具体类型的更多相关文章

  1. Token验证的流程及如何准确的判断一个数据的类型

    Token验证的流程: 1,客户端使用用户名跟密码请求登录:2,服务端收到请求,去验证用户名与密码:3,验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端:4,客户端收到 T ...

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

    function isArray(o) { return Object.prototype.toString.apply(o) === “[object Array]”;}function isFun ...

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

    function getDataType(any){ /* (1) Object.prototype.toString.call 方法判断类型: 优点:通用,返回"[object Strin ...

  4. 判断javaScript变量是Ojbect类型还是Array类型

      JavaScript是弱类型的语言,所以对变量的类型并没有强制控制类型.所以声明的变量可能会成为其他类型的变量, 所以在使用中经常会去判断变量的实际类型. 对于一般的变量我们会使用typeof来判 ...

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

    概述 在项目获取某个元素的值会出现undefined,所以对这种情况要有特殊处理. 可通过下面的代码判断是否为undefined类型. if (typeof(reValue) == "und ...

  6. Javascript学习1 - Javascript中的类型对象

    原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...

  7. javascript 中的类型

    javascript 中的类型 js 是一门弱语言,各式各样的错误多种多样,特别是确定返回值有问题的时候,你会用什么来进行表示错误? 我一般有三个选择: null '' error {} 第一个选择 ...

  8. javascript学习-基本类型

    javascript学习-基本类型 1.概述 javascript的数据类型大体上分两种:基本类型和对象类型.简单的区分就是基本类型是无法再分的原子级类型:对象类型是容器,可以容纳基本类型和对象类型. ...

  9. JavaScript数据检测

    前言: 随着编程实践的增加,慢慢发现关于数据类型的检测至关重要.我认为程序就是为了处理数据和展示数据.所以,数据的检测对于编程来说也至关重要.因为只有符合我们预期的输入,才可能产生正确的输出.众所周知 ...

随机推荐

  1. js获取元素下标

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  2. codeforces 475D

    题意:给定n(n<=100000)个1e9以内的数的数组a,然后最多有3*1e5的询问,对于每个询问,给定一个x,问有多少个(l<=r&&gcd(a[l],a[l+1].. ...

  3. 使用PinYin4j.jar将汉字转换为拼音

    package com.Test.util; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  4. Python自动化开发 - 字符编码、文件和集合

    本节内容 字符编码 文件操作 集合 一.字符编码 1.编码 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.解决思路:数字与符号建立一对一映射,用不同数字表示不同符号. ASCI ...

  5. [jquery] 遮罩弹窗,点击遮罩弹窗自动隐藏

    $("#id_sign_forbidden_win .c-content").click(function(event){ event.stopPropagation(); // ...

  6. .NET Core 微服务之grpc 初体验(干货)

    Grpc介绍 GitHub: https://github.com/grpc/grpc gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计 ...

  7. Spring IOC 容器源码分析 - 循环依赖的解决办法

    1. 简介 本文,我们来看一下 Spring 是如何解决循环依赖问题的.在本篇文章中,我会首先向大家介绍一下什么是循环依赖.然后,进入源码分析阶段.为了更好的说明 Spring 解决循环依赖的办法,我 ...

  8. WCF接口实例介绍

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. WCF整合了原有的windows通讯 ...

  9. Django(ORM常用字段)

    day68 参考:http://www.cnblogs.com/liwenzhou/p/8688919.html 1. Django ORM常用字段:             1. AutoField ...

  10. 全屏使用swiper.js过程中遇到的坑

    概述 swiper.js确实是一个很好用的插件,下面记录下我在全屏使用过程中遇到的一些坑和解决办法,供以后开发时参考,相信对其他人也有用. 通用方案 一般来说,swiper需要放在body的下一层,虽 ...