instanceof 和 typeof 运算符的区别详解
在 JavaScript 中,instanceof
和 typeof
都是用于判断变量类型的运算符,但它们的使用场景和结果判断方式却有很大的不同。
typeof 运算符
typeof
运算符返回一个用于表示变量类型的字符串。它的语法如下:
typeof operand
其中 operand
是用于进行类型判断的操作数。typeof
运算符的返回结果有以下几种:
"undefined"
:undefined
类型的变量;"boolean"
:boolean
类型的变量;"number"
:number
类型的变量;"string"
:string
类型的变量;"symbol"
:symbol
类型的变量;"function"
:function
类型的变量;"object"
:null
或其他对象类型的变量。
需要注意的是,typeof null
返回的是 "object"
,这是一种历史遗留问题。
以下是几个 typeof 运算符的示例:
typeof undefined; // "undefined"
typeof true; // "boolean"
typeof 123; // "number"
typeof "abc"; // "string"
typeof Symbol(); // "symbol"
typeof function() {// "function"
console.log('hello');
}
typeof null; // "object"
typeof {}; // "object"
从上述结果可以看出,typeof
运算符一般用于判断基本数据类型和 function
类型。
instanceof 运算符
instanceof
运算符用来判断一个对象是否为某个类的实例。它的语法如下:
object instanceof constructor
其中 object
是要进行实例判断的对象,constructor
是用来判断的构造函数。
判断结果为布尔值,如果 object
是 constructor
的实例,那么 instanceof
返回 true
,否则返回 false
。
以下是几个 instanceof 运算符的示例:
var o = {};
var a = [];
var n = 123;
var s = 'abc';
o instanceof Object; // true
a instanceof Array; // true
n instanceof Number; // false:因为 Number(n) 返回的是一个基本类型值
s instanceof String; // false:因为 String(s) 返回的是一个基本类型值
上述示例中,o
是 Object
的实例,因此 o instanceof Object
返回 true
;而 n
和 s
分别是 Number
和 String
类型的变量,通过 Number(n)
和 String(s)
转换成了基本类型,因此 n instanceof Number
和 s instanceof String
都返回了 false
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:instanceof和typeof运算符的区别详解 - Python技术站