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判断数据类型的方法的更多相关文章

  1. javascript 判断数据类型的几种方法

    javascript 判断数据类型的几种方法一.typeof 直接返回数据类型字段,但是无法判断数组.null.对象 typeof 1 "number" typeof NaN &q ...

  2. JavaScript判断数据类型总结

    最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断网页特效,在此做一个总结吧! 一.JS中的数据类型  1.数值型(Number):包 ...

  3. Javascript判断数据类型的五种方式及其特殊性

    Javascript判断数据类型的五种方式及区别 @ 目录 typeof instanceof Object.prototype.toString isArray iisNaN ----------- ...

  4. java 判断数据类型和方法

    java 判断数据类型和方法 .我从SOLR查询中获取一个数据一,已知数据类型,是string或者int 或者其他 .我有一个方法(set方法),只有一个参数,但是我不知道参数的数据类型,可能是str ...

  5. JavaScript判断数据类型

    JavaScript中判断数据类型的方式有三种: 1.typeof typeof 1;   //"number" typeof "abc";  //" ...

  6. Javascript判断数据类型与真假值隐形转换研究

    一.引言 我们在开发的时候经常要判断真和假,这是我们经常写的代码: if(a){ alert(1) } 那我们怎么判定a是真还是假呢?下面这些值的真假又是多少呢?它们的数据类型又是怎样的呢? &quo ...

  7. javascript判断数据类型的各种方法

    一.Object.prototype.toString方法(摘自http://javascript.ruanyifeng.com/stdlib/object.html#toc3) //不同数据类型的O ...

  8. JavaScript判断数据类型的4中方法

    一: typeof typeof 是一种运算符,它的值有如下几种(number.boolean.string.undefined.null.function.object.symbol) consol ...

  9. 【前端学习笔记01】JavaScript源生判断数据类型的方法

    原始类型(值类型):Undefined.Null.Number.String.Boolean: 对象类型(引用类型):Object: typeof  可以识别标准类型,null外(返回Object): ...

随机推荐

  1. asp.net core 依赖注入几种常见情况

    先读一篇注入入门 全面理解 ASP.NET Core 依赖注入, 学习一下基本使用 然后学习一招, 不使用接口规范, 直接写功能类, 一般情况下可以用来做单例. 参考https://www.cnblo ...

  2. 结构型---外观模式(Facade Pattern)

    定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通 ...

  3. Java学习笔记之——内部类

    内部类 形式:把一个类定义在一个类的内部. 分为:成员内部类和匿名内部类重点掌握 a) 成员内部类 b) 静态成员内部类 c) 匿名内部类 d) 局部内部类 (1)成员内部类: Java的语言是面向对 ...

  4. datetime模块+calendar模块

    datetime: """ 模块中的类: datatime 同时有时间和日期 timedelta 主要用于计算时间的跨度 tzinfo 时区相关 time 只关注时间 d ...

  5. thinkphp——通过在线编辑器添加的内容在模板里正确显示(只显示内容,而不是html代码)

    thinkphp编辑器回显问题如下: 解决办法如下: 对于编辑器发布的内容,前台模板显示为html的解决办法是: 在模板输出字段加入html_entity_decode()函数 也就是:PHP输出时的 ...

  6. sublime快捷方式小结

    插件 package control安装 代码地址:https://packagecontrol.io/installation //TEXT3 import urllib.request,os,ha ...

  7. angularJS解决数据显示闪一下的问题?-解决办法

    转自:https://www.cnblogs.com/e0yu/p/7219930.html?utm_source=itdadao&utm_medium=referral#undefined ...

  8. jQuery效果之封装模拟placeholder效果,让低版本浏览器也支持

    页面中的输入框默认的提示文字一般使用placeholder属性就可以了,即: <input type="text" name="username" pla ...

  9. 解决在TP5中无法使用快递鸟的即时查询API

    快递鸟的接口对接其实很简单,先去官网注册账号,登陆把基本信息填好,然后在产品管理中订购一下“物流查询”,免费,不过其他产品是收费,免费的有对接口调用频率限制,结合自己的应用流量够用就可以. 使用前复制 ...

  10. ThreadPoolExecutor 线程池的源码解析

    1.背景介绍 上一篇从整体上介绍了Executor接口,从上一篇我们知道了Executor框架的最顶层实现是ThreadPoolExecutor类,Executors工厂类中提供的newSchedul ...