JavaScript数据类型、类型区别及判断方法

263 阅读2分钟

数据类型

Javascript中的数据类型可以分为简单数据类型复杂数据类型

简单数据类型:undefined、null、boolean、number、string。

复杂数据类型:object 其中object 包括数组(Array)、函数(Function)。

判断数据类型方法

例: 先列举出数据类型

var a = [34,4,3,54],
        b = 34,
        c = 'adsfas',
        d= "",
        e = true,
        f = null,
        g = function(){console.log('我是函数')},
        h;

  1. typeof

typeof 可以对 基本类型 进行准确判断(null除外,typeof null===“object”):

  • string
  • number
  • boolean
  • undefined

typeof 对 复杂类型 可返回以下两种类型:

  • object               typeof 把对象、数组或 null 返回 object。
  • function             typeof 运算符不会把函数返回 object。

// typeof 分不清 对象、数组、null

typeof:
var a = [34,4,3,54],    //object
        b = 34,         //number
        c = 'adsfas',   //string
        d= "",          //string 值是 "",类型是 "string"
        e = true,       //boolean
        f = null,       //object
        g = function(){console.log('我是函数')},  //function
        h;              //undefined
    
  1. instanceof

当我们需要知道某个对象的具体类型时,可以用运算符 instanceof,instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型

*注意:instanceof运算符只能用于对象,不适用原始类型的值。
instanceof 的使用限制很多,而且还不能很清晰方便的判断出一个实例是数组还是对象或方法。

'hello' instanceof String          // false
null instanceof Object            // false
undefined instanceof Object      // false

字符串、null和undefined不是对象,所以返回false。

  1. Object.prototype.toString.call()

toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的具体类型。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型,基本上所有对象的类型都可以通过这个方法获取到。

  • undefined 和 null 的区别? 首先看一个判断题:null和undefined 是否相等
console.log(null==undefined)   //true
console.log(null===undefined)  //false

null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。
undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。