JavaScript判断数据类型的方法
typeof操作符
typeof 操作符作用:是用来检测变量的数据类型。对于值或变量使用 typeof 操作符会返回如下字符串。

数据类型undefined的判断示例
变量定义了但未初始化,就是undefined
可以使用===来判断某个变量的值是否等于undefined,如果是,那么这个值就是undefined的数据类型了
var box
alert(box)
alert(typeof box) // box是undefined类型,值是undefined,类型返回的字符串是undefined
数据类型boolean的判断示例

数据类型string的判断示例

数据类型number的判断示例

数据类型function的判断示例
函数在 ECMAScript 中是对象,不是一种数据类型。所以,使用 typeof 来区分 function 和 object 是非常有必要的
function f() {
alert(1)
}
alert(typeof f) //function
alert(f) // 打印出函数本身
数据类型object的判断示例
null不能使用typeof来判断数据类型,因为返回的是object,并且null只有一个值,可以使用===来判断某个变量的值是否等于nulll,如果是,那么这个值就是null的数据类型了

instanceof操作符
要检测一个变量的类型,我们可以通过 typeof 运算符来判别
var box = 'Lee';
alert(typeof box); //string
虽然 typeof 运算符在检查基本数据类型的时候非常好用,但检测引用类型的时候,它就不是那么好用了。通常,我们并不想知道它是不是对象,而是想知道它到底是什么类型的对象。因为数组也是 object,null 也是 Object 等等。
这时我们应该采用 instanceof 运算符来查看。当使用 instanceof 检查基本类型的值时,它会返回 false。
var box = [1,2,3];
console.log(box instanceof Array);//是否是数组:true var box2 = {};
console.log(box2 instanceof Object); //是否是对象:true var box3 = /g/;
console.log(box3 instanceof RegExp); //是否是正则表达式:true var box4 = new String('Lee');
console.log(box4 instanceof String); //是否是字符串对象:true var box5 = null
console.log(box5 instanceof Object) // false
这个操作符专门用来判断对象具体的类型(是一个函数还是一个数组还是一个object),基本数据类型不能使用这个操作符
function fn() {
alert(1)
}
var obj = {
name: 'huang'
}
var arr = [3,4,5]
alert(fn instanceof Object) //true
alert(fn instanceof Function) //true
alert(obj instanceof Object) //true
alert(obj.name instanceof Object) //false
alert(arr instanceof Object) //true
alert(arr instanceof Array) //true
console.log(null instanceof Object) //false
instanceof是如何判断的
表达式: A instanceof B
如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false
function Foo() {}
var f1 = new Foo();
console.log(f1 instanceof Foo); // true
console.log(f1 instanceof Object); // true
console.log(Object instanceof Function)
console.log(Object instanceof Object)
console.log(Function instanceof Object)
console.log(Function instanceof Function)
function Foo() {}
console.log(Object instanceof Foo); // false
console.log(Foo instanceof Object);
利用对象的原型方法toString()方法
对象的原型方法toString()方法是最原始的方法,没有被修改过,需要用被判断的数据使用call来指定这个原型方法去调用,返回一个字符串分别是:
[object String],[object Number],[object Null],[object Array],[object Undefined],[object Function],[object Object]
然后再使用字符串的sclie方法获取到object后面的那个字符串就是正确的数据类型了
var str = 'huang'
var a = 3
var b = null
var c = undefined
var fn = function () {
console.log('我是一个函数')
}
var arr = [2,3,4,2523]
var obj = {
name: 'huang'
}
console.log(Object.prototype.toString.call(str).slice(8, -1)) //String
console.log(Object.prototype.toString.call(a).slice(8, -1)) // Number
console.log(Object.prototype.toString.call(b).slice(8, -1)) // Null
console.log(Object.prototype.toString.call(arr).slice(8, -1)) // Array
console.log(Object.prototype.toString.call(c).slice(8, -1)) //Undefined
console.log(Object.prototype.toString.call(fn).slice(8, -1)) //Function
console.log(Object.prototype.toString.call(obj).slice(8, -1)) //Object
JavaScript判断数据类型的方法的更多相关文章
- javascript 判断数据类型的几种方法
javascript 判断数据类型的几种方法一.typeof 直接返回数据类型字段,但是无法判断数组.null.对象 typeof 1 "number" typeof NaN &q ...
- JavaScript判断数据类型总结
最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断网页特效,在此做一个总结吧! 一.JS中的数据类型 1.数值型(Number):包 ...
- Javascript判断数据类型的五种方式及其特殊性
Javascript判断数据类型的五种方式及区别 @ 目录 typeof instanceof Object.prototype.toString isArray iisNaN ----------- ...
- java 判断数据类型和方法
java 判断数据类型和方法 .我从SOLR查询中获取一个数据一,已知数据类型,是string或者int 或者其他 .我有一个方法(set方法),只有一个参数,但是我不知道参数的数据类型,可能是str ...
- JavaScript判断数据类型
JavaScript中判断数据类型的方式有三种: 1.typeof typeof 1; //"number" typeof "abc"; //" ...
- Javascript判断数据类型与真假值隐形转换研究
一.引言 我们在开发的时候经常要判断真和假,这是我们经常写的代码: if(a){ alert(1) } 那我们怎么判定a是真还是假呢?下面这些值的真假又是多少呢?它们的数据类型又是怎样的呢? &quo ...
- javascript判断数据类型的各种方法
一.Object.prototype.toString方法(摘自http://javascript.ruanyifeng.com/stdlib/object.html#toc3) //不同数据类型的O ...
- JavaScript判断数据类型的4中方法
一: typeof typeof 是一种运算符,它的值有如下几种(number.boolean.string.undefined.null.function.object.symbol) consol ...
- 【前端学习笔记01】JavaScript源生判断数据类型的方法
原始类型(值类型):Undefined.Null.Number.String.Boolean: 对象类型(引用类型):Object: typeof 可以识别标准类型,null外(返回Object): ...
随机推荐
- CloudFoundry 之 IBMCloud 项目部署java例子
步骤一 通过官网注册IBMCloud账号 https://idaas.iam.ibm.com/idaas/mtfim/sps/authsvc?PolicyId=urn:ibm:security:aut ...
- JDBC&Hibernate
当数据库有大量用户来访问要采取什么技术解决 可以采用连接池: 什么是ORM 对象关系映射(Object Relational Mapping 简称ORM)是一种为了解决面向对象与面向关系数据库存在的互 ...
- 转:VB中的API详解
在接下来的这篇文章中,我将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并 ...
- CLR 协变、逆变
看书看得有点晕了,协变.逆变傻傻分不清楚. 看到泛型和委托.委托方法,发现这里面的协变和逆变不一样. 泛型的逆变和协变:如果某个返回类型可以由其基类替换,那么这个类型就是支持协变的.如果某个参数类型可 ...
- devtools进行热部署
热部署的形式这里只介绍一种devtools devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymele ...
- OOP设计模式在路上(一)——简单工厂模式
前言 目前以LabVIEW为主要开发工具,熟悉常规开发框架(队列+状态机),个人用得比较多也感觉比较好用和强大的(JKI,AMC),也用它们开发过一些测试平台,但感觉到了一个瓶颈期,想寻求突破,提升L ...
- angular 过滤器(日期转换,时间转换,数据转换等)
(function() { 'use strict'; /** * myApp Module * * Description */ angular.module('myApp') .filter('i ...
- 官网下载的Struts 2解压后缺少xwork-core.jar文件
为Eclipse配置Struts-2.5.10所需最少jar文件: 缺少的文件已被合并在struts2-core-2.5.10.jar文件中.我下的是最新版的,如果你下的找不到就是这个原因啦.
- 应用生命周期终极 DevOps 工具包
[编者按]本文作者为 Kevin Goldberg,主要介绍了在开发.运营应用的完整生命周期当中,可能用到的 DevOps 工具大集合.文章系 OneAPM 工程师编译整理. DevOps工具包中合适 ...
- The concurrent snapshot for publication 'xxx' is not available because it has not been fully generated or the Log Reader Agent is not running to activate it
在两台测试服务器部署了复制(发布订阅)后,发现订阅的表一直没有同步过来.重新生成过snapshot ,也重新初始化过订阅,都不能同步数据,后面检查Distributor To Subscriber H ...