一匾灶、任意類型轉(zhuǎn)換為字符串
1吆豹、x.toString(S要大寫)
這種方法可以將number,boolean占遥,object轉(zhuǎn)化為字符串俯抖,但是無法轉(zhuǎn)換null,undefined這兩種數(shù)據(jù)類型
(1).toString()
"1"
true.toString()
"true"
var obj={}
(obj).toString()
"[object Object]"
2瓦胎、String(x)(S要大寫)
String(x)是一個(gè)全局函數(shù)芬萍,功能更強(qiáng)大可以轉(zhuǎn)換基本上所有類型為字符串
String(1)
"1"
String(null)
"null"
String(undefined)
"undefined"
String(true)
"true"
String(obj)
"[object Object]"
3尤揣、'' + x OR x + ''
這是最簡單最便捷的一種方法,把x加上一個(gè)空字符串就可以快速將其他類型轉(zhuǎn)換成字符串
1 + ''
"1"
null + ''
"null"
undefined + ''
"undefined"
true + ''
"true"
obj + ''
"[object Object]"
二柬祠、任意類型轉(zhuǎn)換為布爾
1北戏、Boolean(x)(B要大寫)
可以轉(zhuǎn)換所有類型為布爾類型
Boolean(1)
true
Boolean(null)
false
Boolean(undefined)
false
Boolean(obj)
true
Boolean('s')
true
2、!! + x
這是一種最便捷最快的方式來使其他類型轉(zhuǎn)換為布爾類型
!!1
true
!!null
false
!!undefined
false
!!obj
true
!!'s'
true
布爾類型中有五個(gè)falsy值漫蛔,分別是:NaN, 0, null, undefined, ''嗜愈。
falsy是在Boolean 上下文中認(rèn)定可轉(zhuǎn)換為false的值.
對(duì)象數(shù)據(jù)類型無論是空對(duì)象還是其他對(duì)象,只要是對(duì)象轉(zhuǎn)換為布爾值就是true
三莽龟、任意類型轉(zhuǎn)換為數(shù)字
1蠕嫁、Number(x)(N要大寫)
除了要轉(zhuǎn)換的類型本來就是由數(shù)字的組成之外,其他的轉(zhuǎn)換一律變成NaN
Number('1')
1
Number('s')
NaN
Number(obj)
NaN
Number('s1')
NaN
Number('1s')
NaN
Number('+1')
1
Number('-1')
-1
2毯盈、parseInt(x,10)MDN
這是將其他類型轉(zhuǎn)換成整數(shù)類型剃毒,后面的10表示的是十進(jìn)制,取值范圍為2~37之間
parseInt('011',10)
11
parseInt('0x11',10)
0
parseInt('011',36)
37
parseInt('0x11')
17
parseInt('08')
8
parseInt('011',2)
3
3搂赋、parseFloat(x)MDN
解析一個(gè)字符串并返回一個(gè)浮點(diǎn)數(shù)
parseFloat('3.14')
3.14
parseFloat('314e-2')
3.14
parseFloat("0.0314E+2")
3.14
parseFloat("3.14more non-digit characters")
3.14
parseFloat("FF2")
NaN
4赘阀、x - 0
這是一種最簡單快捷的方法,字符串減去一個(gè)0可以轉(zhuǎn)換成數(shù)字
'1'-0
1
's'-0
NaN
'02s'-0
NaN
5厂镇、+ x
在要轉(zhuǎn)換的類型前面加上+可以轉(zhuǎn)換成數(shù)字纤壁,并不是取絕對(duì)值
+ '1'
1
+ '-1'
-1
+ 's'
NaN
+ '1s'
NaN
+ obj
NaN
四、內(nèi)存圖
瀏覽器分配內(nèi)存給每個(gè)頁面捺信,每個(gè)頁面也分配內(nèi)存給js引擎酌媒,js引擎將內(nèi)存分為代碼區(qū)和數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)又分為stack區(qū)和heap區(qū)迄靠,簡單數(shù)據(jù)類型都儲(chǔ)存在stack區(qū)秒咨,復(fù)雜數(shù)據(jù)類型儲(chǔ)存在heap區(qū),并在stack區(qū)儲(chǔ)存heap區(qū)對(duì)象的地址掌挚,通過stack的引用來訪問heap區(qū)的對(duì)象雨席,復(fù)制也只是在stack區(qū)復(fù)制一個(gè)heap的地址
垃圾回收:頁面用完的內(nèi)存,瀏覽器再分給別的頁面吠式,如果一個(gè)對(duì)象沒有被引用陡厘,它就是垃圾,將被回收
內(nèi)存泄漏:垃圾無法被清理特占,在IE6上就存在這樣的bug
五糙置、淺拷貝和深拷貝
深拷貝
var a = 1
undefined
var b = a
undefined
b = 2
2
a
1
b變不影響a,這樣就是深拷貝是目,例如基本類型賦值就是深拷貝
淺拷貝
var a = {
name:'a'
}
undefined
var b = a
undefined
b.name='b'
"b"
a.name
"b"
b變化會(huì)影響a谤饭,這樣的類型就是淺拷貝