基础数据类型
JavaScript 的基础数据类型: String / Number / Null / Undefined / Boolean / Symbol
引用类型:Object
变量类型判断
typeof
可用于判断除 null 以外的基础数据类型,不能判断 null 是因为二进制 000 的问题。
无法判断引用数据类型,除了 Function 类型
typeof 1 // 'number'
typeof '1' // 'string'
typeof undefined // 'undefined'
typeof true // 'boolean'
typeof Symbol() // 'symbol'
typeof [] // 'object'
typeof {} // 'object'
typeof console.log // 'function'
instanceof
实质上是通过原型链来判断的,可以判断引用类型,通常情况下无法对基础数据类型进行判断(可以通过构造函数的方式来判断)
const Person = function() {}
const p1 = new Person()
p1 instanceof Person // true
var str = 'hello world'
str instanceof String // false
var str1 = new String('hello world')
str1 instanceof String // true
== 和 === 的区别?
-
对于 String / Number 等基础数据类型
== 表示 转化为同一类型的值后看是否相等
=== 表示 如果类型不同,其结果就是 false,同类型比较,值相同,那么结果为 true
-
对于 Object / Array 等引用类型
== 和 === 无区别,都是进行指针地址的比较
-
如果是基础数据类型和引用类型相对比
== 会将引用类型转换为基础数据类型,再进行值得比较
=== 由于类型不同,为 false