如何判断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()等
转载于:https://www.cnblogs.com/huansky/p/5853299.html
如何判断JavaScript数据具体类型相关推荐
- 如何准确的判断一个数据的类型
如何准确的判断一个数据的类型(使用Object.prototype.toString.call()) 1.typeof:只能判断基本数据类型,不能判断引用数据类型,判断出来的都是Object 2.in ...
- 【原生】封装一个判断数据类型的函数的方法,准确判断一个数据的类型
// 判断一个数据类型的函数封装的方法,obj是用来接收传入的参数的function gettype(obj) {var type = typeof obj;if (type !== 'object' ...
- JavaScript高级day01-AM【WebStrom安装、数据类型分类及判断、数据-内存-变量、引用变量赋值、对象的组成】
笔记.视频.源码:JavaScript(基础.高级)笔记汇总表[尚硅谷JavaScript全套教程完整版] 目 录 P1 01.尚硅谷_JS高级_准备 07:07 WebStrom 下载及安装 1 ...
- C语言文件操作——数据文件类型、文件判断、文件缓冲区详解
之前,我讲解了文件操作的三大步骤,讲解了文件读写的各类函数和使用方法,今天,还是来和大家聊一聊文件操作剩余的一些知识点. 一.数据文件类型 之前我讲到过文件按照功能类型分为程序文件和数据文件两大类,我 ...
- 如何处理javascript中var类型有效数据极限值问题(超大数据)
最近在做web项目中遇到一个从来未遇到的问题,这个问题相信做为web开发的程序员来说遇到的可能性比较小!那么这个问题是怎么样出现的呢?我们有该如何解决这个问题呢? 由于javascript是弱类型语言 ...
- html file验证文件是否上传,JavaScript判断文件上传类型的方法
本文实例展示了JavaScript判断文件上传类型的方法,是一个非常常用的技巧.具体实现方法如下: 文件上传时用到一个功能,使用html元素的input标签实现: 选中图片后立即触发onchange事 ...
- JavaScript 学习笔记— —类型判断
//1 判断是否为数组类型var a=[0];console.log(isArray(a));function isArray(obj){return (typeof obj=='object') & ...
- 理解JavaScript的原始类型
2019独角兽企业重金招聘Python工程师标准>>> JavaScript中的原始类型(primitive type)包括Undefined.Null.Number.Boolean ...
- JavaScript的变量类型
JavaScript的变量类型 JavaScript的数据类型分为两种: (1)值类型(基本数据类型):字符串(String).数字(Number).布尔(Boolean).未定义(Undefined ...
最新文章
- Redis第三集:redis-benchmark性能测试
- vectorvn1610报价_【8.5873.5444.G323】价格_厂家 - 中国供应商
- java-HashSet源码学习
- JQUERY —— 元素及表单操作
- 在Ubuntu上安装RealPlayer的方法
- python快速入门课堂笔记_Python 快速入门笔记(9):模块和包
- 在C#中实现托盘是多么简单
- 洛谷2486 【SDOI2011】染色(线段树+树链剖分)
- 计算机网络复习-互联网概述
- H5 下载文件到本地
- 如何强制卸载Google浏览器,不用担心Google打开为白板,亲测有效。
- 7.STC15W408AS单片机串口通信
- nginx上传文件大小报错500的解决办法
- SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
- ns注册改服务器,NameSilo域名更改NS服务器简单过程介绍
- yii2-imagine 使用方法
- 【华为OD机试 2023最新 】 最短木板长度(C++ 100%)
- 【PBR系列三】BRDF方程及渲染方程
- nf_conntrack_in(kernel4.14)
- 《互联网保险业务监管暂行办法》
热门文章
- java 输出一个爱心_java基础 之 几个常用的类
- public class c中_Spring中@Import的各种用法以及ImportAware接口
- 计算机网络技术实验,计算机网络技术实验一
- 压电式加速计matlab,低频压电加速度传感器的噪声特性及信号处理方法研究
- html的各种基本标签 fylong,HTML:text标签不工作
- android rss_Android RSS阅读器应用程序
- js模块封装示例_AngularJS模块教程示例
- Total Commander通过CTRL+B调用git-base.exe
- linux系统数据文件和信息--unix环境高级编程读书笔记
- 使用zk可以实现Master选举,实现原理是什么?