這種方法能夠將number,boolean,object轉化爲字符串,可是沒法轉換null,undefined這兩種數據類型git
(1).toString() "1" true.toString() "true" var obj={} (obj).toString() "[object Object]"
String(x)是一個全局函數,功能更強大能夠轉換基本上全部類型爲字符串瀏覽器
String(1) "1" String(null) "null" String(undefined) "undefined" String(true) "true" String(obj) "[object Object]"
這是最簡單最便捷的一種方法,把x加上一個空字符串就能夠快速將其餘類型轉換成字符串函數
1 + '' "1" null + '' "null" undefined + '' "undefined" true + '' "true" obj + '' "[object Object]"
能夠轉換全部類型爲布爾類型code
Boolean(1) true Boolean(null) false Boolean(undefined) false Boolean(obj) true Boolean('s') true
這是一種最便捷最快的方式來使其餘類型轉換爲布爾類型對象
!!1 true !!null false !!undefined false !!obj true !!'s' true
布爾類型中有五個falsy值,分別是:NaN, 0, null, undefined, ''。
falsy是在Boolean 上下文中認定可轉換爲false的值.
對象數據類型不管是空對象仍是其餘對象,只要是對象轉換爲布爾值就是trueip
除了要轉換的類型原本就是由數字的組成以外,其餘的轉換一概變成NaN內存
Number('1') 1 Number('s') NaN Number(obj) NaN Number('s1') NaN Number('1s') NaN Number('+1') 1 Number('-1') -1
這是將其餘類型轉換成整數類型,後面的10表示的是十進制,取值範圍爲2~37之間字符串
parseInt('011',10) 11 parseInt('0x11',10) 0 parseInt('011',36) 37 parseInt('0x11') 17 parseInt('08') 8 parseInt('011',2) 3
解析一個字符串並返回一個浮點數get
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
這是一種最簡單快捷的方法,字符串減去一個0能夠轉換成數字it
'1'-0 1 's'-0 NaN '02s'-0 NaN
在要轉換的類型前面加上+能夠轉換成數字,並非取絕對值
+ '1' 1 + '-1' -1 + 's' NaN + '1s' NaN + obj NaN
瀏覽器分配內存給每一個頁面,每一個頁面也分配內存給js引擎,js引擎將內存分爲代碼區和數據區,數據區又分爲stack區和heap區,簡單數據類型都儲存在stack區,複雜數據類型儲存在heap區,並在stack區儲存heap區對象的地址,經過stack的引用來訪問heap區的對象,複製也只是在stack區複製一個heap的地址
垃圾回收:頁面用完的內存,瀏覽器再分給別的頁面,若是一個對象沒有被引用,它就是垃圾,將被回收
內存泄漏:垃圾沒法被清理,在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變化會影響a,這樣的類型就是淺拷貝