数据类型
在说数据类型转换之前来说下js数据类型 在js中有有五个基本数据类型还有一个复杂的数据类型object
- 五种基本类型:
- number
- string
- null
- undefined
- boolean
- 复杂数据类型:
object -(包括 数组Array 函数function 对象object)
变量
大家都知道js是一个弱类型的 var来声明变量 无法确定变量一定会存放啥样的值 所以就不知道是啥类型 而且类型也可以随时改变 所以就要检测变量到底是哪个数据类型
数据类型检测
typeof 不是方法是运算符 这个运算符可以返回一个值的数据类型
typeof(123) //number typeof(`123`) //string typeof(false) // boolean typeof(fn) //function typeof(undefined) //undefined typeof(window) //object typeof {} // object typeof [] // object **注意** typeof(null) //object 因为 null 是 空的对象引用复制代码
Object.prototype.toString toString是Object原型对象上的一个方法 返回其调用者的具体类型是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型
Object.prototype.toString.call('') // [object String] Object.prototype.toString.call(1) // [object Number] Object.prototype.toString.call(true) // [object Boolean] Object.prototype.toString.call(undefined) // [object Undefined] Object.prototype.toString.call(null) // [object Null] Object.prototype.toString.call(new Function()) // [object Function] Object.prototype.toString.call(new Date()) // [object Date] Object.prototype.toString.call([]) // [object Array] Object.prototype.toString.call(new RegExp()) // [object RegExp] Object.prototype.toString.call(new Error()) // [object Error] Object.prototype.toString.call(document) // [object HTMLDocument] Object.prototype.toString.call(window) //[object global]复制代码
注意上面是call() 从原型链角度来说 所有对象最终都会执行Object 但是这样不能保证自己对象实现了toString的方法 在原型链中查找的时候就不能使用Object 的toString方法了 所以使用call() 来改变this指向 将Object的toString方法拿到对象中使用
数据类型注意点