Javascript学习笔记:3种检测变量类型的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript学习笔记:3种检测变量类型的方法相关的知识,希望对你有一定的参考价值。

①typeof检测变量类型

1 console.log(typeof 1);//number
2 console.log(typeof "a");//string
3 console.log(typeof true);//boolean
4 console.log(typeof undefined);//undefined
5 console.log(typeof (function func(){}));//function
6 console.log(typeof null);//object
7 console.log(typeof {});//object

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

②instanceof检测变量类型

1 console.log({} instanceof Object);//true
2 console.log([] instanceof Array);//true
3 console.log([] instanceof Object);//true
4 console.log((function func(){}) instanceof Function);//true
5 console.log((function func(){}) instanceof Object);//true
6 console.log(/a{3}/gi instanceof RegExp);//true
7 console.log(/a{3}/gi instanceof Object);//true

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

③constructor检测变量类型

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

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

以上是关于Javascript学习笔记:3种检测变量类型的方法的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript学习笔记五:变量作用域和内存问题

JavaScript笔记:数据类型

JavaScript学习笔记

JavaScript学习笔记—— 4. 变量作用域和内存问题

《javascript高级程序设计》学习笔记 | 8.3.继承

《JavaScript高级教程》学习笔记变量和数据类型