JS篇-基本类型和引用类型、typeof

1.typeof返回的七种类型

typeof一共会返回七种类型:number, boolean, string, undefined, object, function.java

还有一种是ES6新增的symbol。数组

typeof只能区别基本类型,而不能区分引用类型bash

var log = console.log.bind(console)
复制代码

  • number类型

log(typeof 0)    // number
log(typeof NaN) // number  NaN在javaScript里面表明的是特殊非数字值,自己是一个数字类型
复制代码

  • boolean类型

log(typeof true) // boolean
log(typeof false) // boolean复制代码

  • string类型

log(typeof '') // string
log(typeof 'str') // string复制代码

  • undefined类型

log(typeof undefined) // undefined
log(typeof a) // undefined 判断未定义的变量或者是定义了变量未赋值复制代码

  • function类型

var fn = function () { ... }
function fn2() { .... }
log(typeof fn) // function
log(typeof fn2) // function
log(typeof Array) // function
log(typeof Date) // function复制代码

  • object类型(数组,对象,null等等)

var obj = {
    ...
}
var arr = []
log(typeof arr) // arr
log(typeof obj) // object
log(typeof null) // object
log(typeof window) // object复制代码

2.什么是基本类型和引用类型

基本类型就是指Number、Boolean、String、undefined、nullui

引用类型指Object、Functionspa

区别:基本类型没有属性与方法,而引用类型有;基本类型的数据是存放在栈内存中,而引用类型的数据是存放在堆中;

我的理解:基本类型至关于现金,能够直接使用,而引用类型是存折,要用还要去银行取。3d

复制变量指针

基本类型的值改变互不影响
var a = 1
var b = a
log(a) // 1
log(b)	// 1
a = 2
log(a) // 2
log(b) // 1
复制代码

var a = 1
var b = a
log(a) // 1
log(b)	// 1
b = 3
log(a) // 1
log(b) // 3复制代码

基本类型的变量复制是在栈内存新建一个空间存储值,若是一个值改变,不会影响到其余
code


引用类型的复制跟基本类型的复制不同cdn

var obj1 = new Object()
var obj2 = obj1复制代码


定义对象是在栈内存里面定义了一个指针,该指针指向了堆内存里面对象的存储地址,对象

复制对象的过程实际是把对象的地址复制给另外一个对象,两个指针指向同一个地址,一个对象改变,另外一个也会被改变

var obj = new Object()
var obj2 = obj
log(obj)  // {}
log(obj2)  // {}

obj.a = 2
log(obj)  // {a: 2}
log(obj2) // {a: 2}
复制代码
相关文章
相关标签/搜索