当前位置: 代码迷 >> 综合 >> javascript中 typeof 和 instanceof 的区别
  详细解决方案

javascript中 typeof 和 instanceof 的区别

热度:13   发布时间:2023-12-16 04:22:20.0

typeof 检测数据类型

typeof 操作符返回一个字符串,表示未经计算的操作数的类型

基本数据类型检查

// Number
typeof 123 // "number"
typeof 12.11 // "number"
typeof(21) // "number"
typeof Infinity // 'number';
typeof NaN // 'number'; 
typeof Number(1) // "number"// BigInt
typeof 42n === 'bigint'; // true// String
typeof 'hello' // "string"
typeof "hello" // "string"
typeof String('hello') // "string"// Boolean
typeof true // "boolean"
typeof false // "boolen"// Undefined
typeof undefined // "undefined"// Symbols
typeof Symbol() // "symbol"
typeof Symbol('foo') // "symbol"
typeof Symbol.iterator // "symbol"
// 函数类型
typeof function() {
    } // "function"
let fn = function() {
    }
typeof fn // "function"

对象

// 复杂数据类型检查,除 Function 外的所有构造函数的类型都是 'object'
typeof {
    a: 1} // "object"
typeof [1, 2, 3] // "object"
typeof [] // "object"
typeof new String() // "object"
typeof new Number() // "object"
typeof new Date() // "object"
typeof new Array() // "object"
typeof new RegExp() // "object"
typeof /regex/ // "object"
typeof new Error() // "object"
typeof null // "object"

总结:typeof 用于检查一个数据是什么类型,返回一个小写字母的类型字符串,右边只需要一个操作数,这个操作数是简单数据类型或者函数或者对象

instanceof 检查对象之间的关联性

语法:object instanceof constructor
object:某个实例对象
constructor:某个构造函数

[1, 2, 3] instanceof Array // true
const profile = {
    name: 'zhangsan', gender: 'Male'}
profile intanceof Object // true
new Number(666) instanceof Number // true
new Date() instanceof Date // true
new String() instanceof String // true
({
    })  instanceof Object // true

总结:instanceof 运算符用于检查某个变量是否属于某个实例对象,返回值是布尔值,运算符左边必须是引用类型,右边必须是函数
instanceof 操作数有两个,左右各一个。

  相关解决方案