js类型详解


js的类型实际上是一个基本问题,但它总能在一些小的细节上给人困扰,这次就一口气把这个问题好好解决了

参考资料

js类型详解

js分为基本类型和引用类型

基本类型

基本类型一共5种

1.Undefined

使用var声明变量时,如果没有对其赋值就引用它就会产生undefined值

1
2
3
4
5
6
7
var a

a // -> undefined

a == undefined // -> true

c === undefined // -> true

2.Null

从逻辑上说,null值表示一个空对象指针,这也正是使用typeof来检测null会返回object的原因

1
console.log(typeof(null)) // -> 'object'

3.boolean

4.number

5.string

引用类型

Object类型

Array类型

Date类型

RegExp类型

Function类型

Symbol类型(es6新加)

基本包装类型

ECMAScript提供了3种特殊的引用类型 Boolean,Number,String.也就是是它们三个实际上都是function的实例罢辽

1
2
3
4
5
6
7
let a = "a"
let b = String("a")
let c = new String("a")

console.log(typeof(a)) // -> "string"
console.log(typeof(b)) // -> "string"
console.log(typeof(c)) // -> "object"

特殊情况

1.NaN的类型

1
2
3
4
5
console.log(typeof(NaN))
// -> 'number'

console.log(NaN == NaN)
// -> false

2.Undefined和Null

null表示此处不该有值,undefined表示此处应该有值

1
2
3
4
5
console.log(undefined == null)
// -> true

console.log(undefined === null)
// -> false

3.== 和 === 的区别

Show code

1
2
100 == "100" // -> true
100 === "100" // -> false

3.1 === 判断规则

首先要等号两边类型相同,然后才是值相同

3.2 == 判断规则

  • 如果两边存在boolean,string,number任意两者进行比较,优先转化为数字
  • null == undefined