JS 中 typeof instanceof constructor Object.prototype.toString.call()判断数据类型

JS 中 typeof instanceof constructor Object.prototype.toString.call()判断数据类型

JS的数据类型: 基础数据类型和复杂数据类型(引用数据类型)

  • 基础数据类型: number string undefined null boolean symbol
  • 引用数据类型: object

    文章目录

    • JS 中 typeof instanceof constructor Object.prototype.toString.call()判断数据类型
      • 1. typeof 返回一个字符串类型
      • 3. `Object.prototype.toString.call()`使用方法

1. typeof 返回一个字符串类型

MDN介绍

  • 语法
    typeof 运算符后接操作数 操作符返回一个字符串 字符串 字符串,表示未经计算的操作数的类型

    typeof operand
    typeof(operand)
    

operand一个表示对象或原始值的表达式,其类型将被返回。

描述 结果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol "symbol"
Function "function"
Object "object"
  • 示例
// 数值 number
typeof 1 // "number"
typeof NaN // "number"
typeof 3.14 // "number"
typeof Infinity // "number"

// 字符串
typeof "小火车" // "string"
typeof typeof typeof 1 // "string"

// 布尔值
typeof true // "boolean"

// Symbol
typeof Symbol() // "symbol"
typeof Symbol("foo") // "symbol"

// Undefined
typeof undefined // "undefined"

// Null
typeof null // "object"

// Object
typeof {name: "小火车"} // "object"
typeof /regex/ // 正则也是对象 "object"

// Function
typeof function() {} // "function"
typeof class C {} // "function"
  • 注意 注意 注意 注意 注意
    • 当使用 new 操作符的时候也是对象, 但是只有函数function例外
    let str = new String('String')
    let num = new Number(100);
    typeof str  // "object" 
    typeof num  // "object" 
    
    let func = new Function()
    typeof func // "function"
    
    • 当判断Null的时候会返回一个"object"的字符串, 因为null代表的是空指针对象
    // JavaScript 诞生以来便如此
    typeof null // 'object'
    
    • 当使用()语法的时候, 括号有无将决定表达式的类型
    typeof ( 1 + "小火车") // "string"
    typeof 1 + "小火车" // "number小火车"
    

3. Object.prototype.toString.call()使用方法

let arr = [1,2,3]
let obj = {name: '小火车'}

console.log(Object.prototype.toString.call(arr)) // '[object Array]'
console.log(Object.prototype.toString.call(obj)) // '[object Array]'

你可能感兴趣的:(JS)