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}
複製代碼
相關文章
相關標籤/搜索