ECMAScript 2018 中的类型判断:如何使用 instanceof 和 typeof 运算符
在前端开发中,我们常常需要判断一个变量的数据类型,这可以帮助我们避免出现一些不必要的错误。在 ECMAScript 2018 中,我们可以使用 instanceof 和 typeof 运算符来进行类型判断,这两个运算符可以帮助我们方便地进行数据类型的判断和转换。
一、typeof 运算符
typeof 运算符可以返回一个变量的数据类型,它的语法如下:
typeof variable
其中,variable 表示要判断的变量。
typeof 运算符可以返回以下几种类型的值:
- "undefined":表示变量没有定义
- "boolean":表示变量是布尔值类型
- "number":表示变量是数字类型
- "string":表示变量是字符串类型
- "symbol":表示变量是 Symbol 类型
- "function":表示变量是函数类型
- "object":表示变量是对象类型,包括 null 和数组
例如,在下面的代码中,我们使用 typeof 运算符判断一个变量的数据类型:
-- -------------------- ---- ------- --- --- - ---- ------------------ ----- -- -------- --- --- - ------ ------------------ ----- -- -------- --- --- - --- ------------------ ----- -- -------- --- --- - --- ------------------ ----- -- -------- --- -- - ---------- --- ------------------ ---- -- ---------- --- --- - --------- ------------------ ----- -- -------- --- - - ----- ------------------ --- -- --------- --- -- ------------------ --- -- ----------- --- - - ----- ------------------ --- -- --------
需要注意的是,当我们使用 typeof 运算符判断 null 类型时,返回的是 "object",这是一个历史遗留问题。
二、instanceof 运算符
instanceof 运算符可以用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,它的语法如下:
object instanceof constructor
其中,object 是要测试的对象,constructor 是表示该对象所属的类的构造函数。
例如,在下面的代码中,我们使用 instanceof 运算符来检查一个对象是否是数组:
var arr = []; console.log(arr instanceof Array); // true var obj = {}; console.log(obj instanceof Array); // false
需要注意的是,instanceof 运算符只能检测对象类型(Object,Function,Array),不能检测原始数据类型(Boolean,Number,String,Symbol)等其他类型。
三、如何使用 typeof 和 instanceof 运算符
我们可以根据 typeof 和 instanceof 运算符返回的结果来进行条件分支的判断,从而实现程序的控制流程。
例如,下面的代码中,我们使用 typeof 判断一个变量的数据类型,并根据不同的结果输出不同的信息:
-- -------------------- ---- ------- --- --- - ---- --- --- - ------ --- --- - --- --- --- - --- --- -- - ---------- --- --- --- - --------- --- - - ----- --- -- --- - - ----- -- ------- --- --- --------- - ---------------- -- - ---------- - -- ------- --- --- --------- - ---------------- -- - ---------- - -- ------- --- --- --------- - ---------------- -- -- ---------- - -- ------- --- --- --------- - ---------------- -- -- --------- - -- ------- -- --- ----------- - --------------- -- - ------------ - -- ------- --- --- --------- - ---------------- -- - ---------- - -- ------- - --- ---------- - -------------- -- - ----------- - -- ------- - --- ------------ - -------------- -- -- --------- ------------ - -- -- --- ----- - -------------- -- - ---- ------------ -
输出结果如下:
-- -------------------- ---- ------- --- -- - ------- --- -- - ------- --- -- -- ------- --- -- -- ------ -- -- - --------- --- -- - ------- - -- - -------- - -- -- --------- --------- - -- - ---- ---------
再例如,在下面的代码中,我们使用 instanceof 运算符来检测一个对象是否是数组类型,并根据结果输出不同的信息:
-- -------------------- ---- ------- --- --- - --- -- --- --- --- - --- -- ---- ---------- ------ - ---------------- -- -- --------- - ---- - ---------------- -- --- -- --------- - -- ---- ---------- ------ - ---------------- -- -- --------- - ---- - ---------------- -- --- -- --------- -
输出结果如下:
arr is an array. obj is not an array.
总结
本文介绍了 ECMAScript 2018 中的类型判断方法,包括 typeof 和 instanceof 运算符。我们可以根据返回的结果来判断一个变量的数据类型,并根据需要进行处理。在实际的开发中,需要根据具体情况选择合适的方法来进行类型判断,并结合其他语言特性进行程序设计和优化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e9b154f6b2d6eab34e4586