①typeof检测变量类型

 console.log(typeof 1);//number
console.log(typeof "a");//string
console.log(typeof true);//boolean
console.log(typeof undefined);//undefined
console.log(typeof (function func(){}));//function
console.log(typeof Symbol())//symbol
console.log(typeof null);//object
console.log(typeof {});//object

typeof检测变量类型只能返回:number、string、boolean、undefined、function、symbol、object这七种值,可以用来判断基本数据类型,但对于判断引用类型来说还不够具体。这里需要注意的是对于函数、null的typeof检测结果。

②instanceof检测变量类型

 console.log({} instanceof Object);//true
console.log([] instanceof Array);//true
console.log([] instanceof Object);//true
console.log((function func(){}) instanceof Function);//true
console.log((function func(){}) instanceof Object);//true
console.log(/a{3}/gi instanceof RegExp);//true
console.log(/a{3}/gi instanceof Object);//true

instanceof只可以用来判断引用类型变量的具体类型,不可以用来判断基本数据类型(如果使用instanceof操作符检测基本数据类型的值,则该操作符返回结果始终都是false)。使用instanceof时,只要后面的数据类型处于引用类型变量所属类型的原型链上,结果都将返回true。所有引用类型的值都是Object实例,所以所有引用类型变量的instanceof Object都将返回true。

③constructor检测变量类型

 console.log({}.constructor===Object);//true
console.log([].constructor===Array);//true
console.log([].constructor===Object);//false
console.log((function func(){}).constructor===Function);//true
console.log((function func(){}).constructor===Object);//false
console.log((/a{3}/gi).constructor===RegExp);//true
console.log((/a{3}/gi).constructor===Object);//false

对于所有引用类型的变量,都有一个属性constructor,该属性指向该引用类型的构造函数。当然,constructor不能用于基本数据类型的类型检测。

Javascript学习笔记:3种检测变量类型的方法的更多相关文章

  1. JavaScript学习笔记——JS中的变量复制、参数传递和作用域链

    今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执 ...

  2. JavaScript学习笔记(八)——变量的作用域与解构赋值

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  3. Java学习笔记(4)--- 变量类型,修饰符

    1.变量类型: a.定义: 和C++差不多,就是: type identifier [ = value][, identifier [= value] ...]: type为Java数据类型.iden ...

  4. Python基础学习笔记(二)变量类型

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  5. Javascript学习笔记:对象的属性类型

    在ECMAScript中有两种属性:数据属性和访问器属性 1.数据属性 configurable:表示能否通过delete删除属性从而重新定义属性:或者能否修改属性的特性:或者能否把属性修改为访问器属 ...

  6. 1.4(JavaScript学习笔记) window对象的属性及方法

    一.window对象 window对象代表当前窗口,所有全局对象都是windows的属性, 例如document是window的属性,window.document.writer("&quo ...

  7. JavaScript学习笔记:数组的indexOf()和lastindexOf()方法

    https://www.w3cplus.com/javascript/array-part-6.html

  8. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  9. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

随机推荐

  1. JFinal学习

    1 jfinal-1.9-bin.jar 2 继承Controller编写控制器 public void sendJPushToXXX() { String userId = getPara(&quo ...

  2. Asp.Net Mvc4 Webapi Request获取参数

    最近用mvc4中的WEBAPI,发现接收参数不是很方便,跟传统的request.querystring和request.form有很大区别,在网上搜了一大圈,各种方案都有,但不是太详细,于是跟踪Act ...

  3. Hadoop基础知识

    摘要:Hadoop的安装目录了解.etc的核心配置项.hadoop的启动.HDFS文件的block块级副本的存放策略.checkpoint触发设置. 1.hadoop目录了解 bin:可执行文件,命令 ...

  4. 总结ThinkPHP使用技巧经验分享(一)

    约定:1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致2.控制器的类名以Action为后 缀3.模型的类名以Model为后缀,类名第一个字母须大写4.数据库表名全部采 ...

  5. mysql 几个命令

    show databases; 显示所有数据库 create database 数据库名; 创建数据库 drop database 数据库名; 删除数据库

  6. apache 集成ssl 配置 https 证书

    http://zhangge.net/4890.html 后面遇到 问题点一:  it`s work 是因为没配置ssl访问站点路径 /alidata/server/httpd/conf/extra/ ...

  7. Hdu 1009 FatMouse' Trade

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. Oracle EBS 初始化用户密码(转)

    ---修改密码,并且将限制用户下次登录的时候(第一次登录),强制要换一个新的口令: ---此过程可以完全模拟我们在标准用户的Form里面初始化用户的密码的动作! ---最后要说明的是,这个处理过程是通 ...

  9. Razor语法&ActionResult&MVC

    Razor代码复用 mvc 4 razor语法讲解和使用 了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult 了解ASP.NE ...

  10. logrotate

    logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. logrotate命令格式:logrot ...