JavaScript 如何判断一个数据的类型
JavaScript的数据类型: (参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures)
原始类型(6种):Number、String、Boolean、Null、Undefined、Symbol(in es6) 和Object
使用:
JavaScript 是一种弱类型语言,可以在声明时不用声明类型,在程序运行过程中类型会被自动确定,可以同一个变量保存不同类型的数据。
这也导致了一个问题,在判断数据类型时会出现类型不精确的情况,导致判断出现问题。
判断数据类型:
1.typeof 操作符返回一个字符串,表示未经计算的操作数的类型 在使用typeof 判断数据类型时,常常返回以下字符串(隐式声明,不使用new 声明) Undefined 'undefined' Null 'object' Number 'number' String 'string' Boolean 'boolean' Symbol 'symbol' 函数对象 'function' 宿主对象(由JS环境提供) Implementation-dependent 任何其他对象 'object' 注意: 在某些显示声明情况下,通常返回 'object' 例如: new String('asd')、 new Number('1')、new Boolean('0') 在ie6、7、8上,很多宿主对象 返回对象而不是函数 例如 alert等
判断对象类型:
在使用JavaScript时,有时需要判断一个对象的精准类型,例如 Array,在判断Array等是否为指定数据类型时, 使用typeof 无法进行判断,这时可以 使用 Object.prototype.toString.call(target) 返回 '[object Array]'
判断是否为某个构造函数的实例:
vm instanceof constructor