JavaScript: typeof和instanceof用法

2025-04-18 17:02:26

ECMAScript是松散类型的,因此需要一种手段来检测给定变量的数据类型,typeof操作符常用于基本数据类型检测,instanceof操作符常用于引用类型数据检测。

typeof

1、ECMAScript是松散类型的,一次需要一种手段来检测给定变量的数据类型,typeof操作符(注意不是函数哈!)就是负责提供这方面信息的,typeof 可以用于检测基本数据类型和引用数据类型。

2、语法格式如下:typeof variable

3、返回6种String类型的结果:- "undefined" - 如果这个值未定义- "boolean" - 如果这个值是布尔值- "string" - 如果这个值是字符串- "number" - 如果这个值是数值- "object" - 如果这个值是对象或null- "function" - 如果这个值是函数

4、示例:console.log(typeof 'hello'); // "string"console.log(typeof null); // "object"console.log(typeof (new Object())); // "object"console.log(typeof(function(){})); // "function"

5、typeof主要用于检测基本数据类型:数值、字符串、布尔值、undefined, 因为typeof用于检测引用类型值时,对于任何Object对象实例(包括null),typeof都返回"object"值,没办法区分是那种对象,对实际编码用处不大。

instanceof

1、在检测基本数据类型时typeof是非常得力的助手,但在检测引用类型的值时,这个操作符的用处不大,通常,我们并不是想知道某个值是对象,而是想知道它是什么类型的对象。此时我们可以使用ECMAScript提供的instanceof操作符。

2、语法格式如下:result = variable instanceof constructor

3、返回布尔类型值:- true - 如果变量(variable)是给定引用类型的实例,那么instanceof操作符会返回true- false - 如果变量(variable)不是给定引用类型的实例,那么instanceof操作符会返回false

4、示例:function Person(){}funct坡纠课柩ion Animal(){}var person1 = new Person();var animal1 = new Animal();console.log(person1 instanceof Person); // trueconsole.log(animal1 instanceof Person); // falseconsole.log(animal1 instanceof Object); // trueconsole.log(1 instanceof Person); //false

5、根据规定,所有引用类型的值都是Object的实例。因此,在检测一个引用类型值和Object构造函数时,instanceof操作符会始终返回true。如果使用instanceof 操作符检测基本类型值时,该操作符会始终返回false,因为基本类型不是对象。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:48
  • 阅读量:73
  • 阅读量:37
  • 阅读量:41
  • 阅读量:29
  • 猜你喜欢