內(nèi)容: 類型轉(zhuǎn)換 五個falsy值 內(nèi)存圖 垃圾回收 深淺拷貝
強制轉(zhuǎn)換
一. 任意類型轉(zhuǎn)Number
五種方法
- Number(x)
- parseInt(x, 10)
- parseFloat(x)
- x - 0
- +x
轉(zhuǎn)換規(guī)則 參數(shù)是 基本類型 和 對象時是不同的
基本類型
- 數(shù)值 : 不變
- 字符串: 能解析為數(shù)字 Number(''324) //324
不能解析位數(shù)字 Number('324abc') //NaN
空字符串 Number('') //0 - 布爾值 : true //1 false //1
- undefined : NaN Number(undefined) // NaN
- unll : 0 Number(null) //0
對象 : NaN
Number({a;1}) //NaN
Number([1,2,3]) //NaN
除非是包含單個數(shù)值的數(shù)組 Number([5]) //5
二. 任意類型轉(zhuǎn)String
三種方式
- String(x)
- x.toString()
- ' ' + x 芳芳推薦**
數(shù)值 : 相應(yīng)字符串 123 //'123'
- 字符串: 不變
- 布爾值:true > "true" false > "false"
- undefined : "undefined"
- null : "null"
- object對象:如果是對象,返回一個類型字符串 ; //"[object object ]"
- 如果是數(shù)組,返回數(shù)組的字符串形式。
- String({a: 1}) // "[object object]"
- String([1,2,3]) // '1,2,3'
#三. 任意類型轉(zhuǎn)布爾Boolean
兩種方法
- Boolean(x)
- !! x 芳芳推薦
五個falsy值,其他都是True
NaN null undefined 0(正負) ' ' (空字符串)
所有的對象全部都是true
自動轉(zhuǎn)換 以強制轉(zhuǎn)換為基礎(chǔ)
以下三種情況,JavaScript 會自動轉(zhuǎn)換數(shù)據(jù)類型,即轉(zhuǎn)換是自動完成的,用戶不可見
- 1.不同類型的數(shù)據(jù)互相運算
- 對非布爾值類型的數(shù)據(jù)求布爾值
- 3.對非數(shù)值類型的值使用一元運算符(即+和-)
建議在預(yù)期為布爾值、數(shù)值、字符串的地方,全部使用Boolean、Number和String函數(shù)進行顯式轉(zhuǎn)換。
一. 自動轉(zhuǎn)換為數(shù)值
除加法運算符,其他運算符都會把運算轉(zhuǎn)為數(shù)值。
'5'-'2' // 3 '5' * [] // 0 '5' * '2' //10
false/ '5' // 0 true -'1' //0 'abc' - 1//NaN
false - 1 //-1 '1' - 1 // 0 undefined + 1 // NaN
unll + 1 //1 + 'abc' // NaN - "abc" //NaN
二 . 自動轉(zhuǎn)換為布爾值 Boolean
條件部分轉(zhuǎn)為布爾
五個falsy
undefined NaN null 0 ' '
方法 : ① !!X (推薦) ②Boolean(x)
三.自動轉(zhuǎn)為字符串
自動轉(zhuǎn)換主要發(fā)生在字符串的加法運算中
方法
- 1 ' ' + x(芳芳推薦)
- 2 window .String()
- 3 x.toString()
深復(fù)制是什么鬼
var a = 1
var b = a
b = 2 //這個時候改變 b
a 完全不受 b 的影響
那么我們就說這是一個深復(fù)制
對于簡單類型的數(shù)據(jù)來說,賦值就是深拷貝。
對于復(fù)雜類型的數(shù)據(jù)(對象)來說,才要區(qū)分淺拷貝和深拷貝。
這是一個淺拷貝的例子
var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true
因為我們對 b 操作后,a 也變了
什么是深拷貝了,就是對 Heap 內(nèi)存進行完全的拷貝。
var a = {name: 'frank'}
var b = deepClone(a) // deepClone 還不知道怎么實現(xiàn)
b.name = 'b'
a.name === 'a' // true
內(nèi)存圖 與 垃圾回收

轉(zhuǎn)換1.jpg

轉(zhuǎn)換2.jpg