JS里面的數(shù)據(jù)類型轉(zhuǎn)換

1.JS有5種簡(jiǎn)單數(shù)據(jù)類型(也稱基本數(shù)據(jù)類型):undefined、null居凶、Boolean致板、Number和String右锨。還有兩種復(fù)雜數(shù)據(jù)類型——symbol(這里不做多介紹)和Object匾寝,對(duì)象本質(zhì)上是由一組無(wú)序的名值對(duì)組成的,ECMAScring不支持任何創(chuàng)建自定義類型的機(jī)制荷腊,而所有值最終都將是上述7種數(shù)據(jù)類型之一艳悔。

數(shù)據(jù)類型的相互轉(zhuǎn)換
1.任意數(shù)據(jù)類型轉(zhuǎn)字符串

String(x)

String(1)//"1"

String(true)//"true"

String(null)//"null"

String(undefined)//"undefined"

String({})//"[Object Object]"

toString()

(1).toString()  //"1"

true.toString() //"true"

null.toString()  //Uncaught TypeError: Cannot read property 'toString' of null
 // at <anonymous>:1:6

undefined.toString()  //Uncaught TypeError: Cannot read property 'toString' of undefined
//at <anonymous>:1:11
{}.toString()   //Uncaught SyntaxError: Unexpected token .

({}).toString()  //"[object Object]"

老司機(jī)用法:x+''

1+''  //  "1"
true+'' // 'true'
null+'' // 'null'
undefined+'' // 'undefined'
{}+'' // 0
var o = {}
o+ '' //{object Object}

2.任意數(shù)據(jù)類型轉(zhuǎn)數(shù)字

1.Number(x)
2.parselnt(x,10)MDN
3.parseFloat(x)MDN
4.x-0
5.+x

3.任意數(shù)據(jù)類型轉(zhuǎn)布爾值

1.Boolean(x)
2.!!x

4.五個(gè)falsy值

0 NaN '' null undefined .

falsy是在Boolean上下文中認(rèn)定可轉(zhuǎn)換為false的值女仰。
JavaScript在需要用到布爾類型的上下文中使用強(qiáng)制類型轉(zhuǎn)換(Type Conversion)將值轉(zhuǎn)換為布爾值猜年,比如:在條件語(yǔ)句或循環(huán)語(yǔ)句中


5.內(nèi)存圖
  1. 你買(mǎi)一個(gè) 8G 的內(nèi)存條
  • 操作系統(tǒng)開(kāi)機(jī)即占用 512MB
  • Chrome 打開(kāi)即占用 1G 內(nèi)存
  • Chrome 各每個(gè)網(wǎng)頁(yè)分配一定數(shù)量的內(nèi)存
  • 這些內(nèi)存要分給頁(yè)面渲染器、網(wǎng)絡(luò)模塊疾忍、瀏覽器外殼和 JS 引擎(V8引擎)
  • JS 引擎將內(nèi)存分為代碼區(qū)和數(shù)據(jù)區(qū)
  • 我們只研究數(shù)據(jù)區(qū)
    *數(shù)據(jù)區(qū)分為 Stack(棧內(nèi)存) 和 Heap(堆內(nèi)存)
  • 簡(jiǎn)單類型的數(shù)據(jù)直接存在 Stack 里
  • 復(fù)雜類型的數(shù)據(jù)是把 Heap 地址存在 Stack 里
    遇到問(wèn)題就畫(huà)圖乔外,不要分析。

如果將復(fù)雜數(shù)據(jù)類型存放在棧內(nèi)存里面一罩,那么向其中添加數(shù)據(jù)就很麻煩杨幼、一些數(shù)據(jù)就需要向后面移動(dòng)。只需要在棧內(nèi)存中給代表復(fù)雜數(shù)據(jù)類型(對(duì)象)的變量存放一個(gè)地址(沒(méi)有指針,是引用)指向堆內(nèi)存中的數(shù)據(jù)差购。一個(gè)變量等于另一個(gè)復(fù)雜數(shù)據(jù)類型四瘫,就把地址復(fù)制給它。
所有的變量和對(duì)象都是引用關(guān)系欲逃。

4個(gè)常見(jiàn)的面試題
var a = 1
var b = a
b = 2
請(qǐng)問(wèn) a 顯示是幾找蜜?  //1
var a = {name: 'a'}
var b = a
b = {name: 'b'}
請(qǐng)問(wèn)現(xiàn)在 a.name 是多少?//'a'
var a = {name: 'a'}
var b = a
b.name = 'b'
請(qǐng)問(wèn)現(xiàn)在 a.name 是多少稳析?//'b'
var a = {name: 'a'}
var b = a
b = null
請(qǐng)問(wèn)現(xiàn)在 a 是什么洗做?//{name: 'a'}
垃圾回收機(jī)制

GC 垃圾回收 如果一個(gè)對(duì)象沒(méi)有被引用,那么它就是垃圾彰居,將會(huì)被回收诚纸。
引用包括事件觸發(fā)引用,如果一個(gè)函數(shù)被頁(yè)面上的事件引用了裕菠,也不會(huì)算作垃圾被回收咬清。
解決辦法:將事件賦值null,就表示不再引用奴潘。
IE6 BUG 無(wú)法正常的在頁(yè)面關(guān)閉時(shí)旧烧,將沒(méi)有人引用的垃圾正常的清除。設(shè)置window.onunload事件画髓,將所有的事件都設(shè)置為null掘剪。
內(nèi)存泄露:表示該被標(biāo)記為垃圾的數(shù)據(jù)沒(méi)有被標(biāo)記,內(nèi)存就會(huì)被永久的占用奈虾。除非把整個(gè)瀏覽器關(guān)閉夺谁,否則瀏覽器就會(huì)吃很多的內(nèi)存,無(wú)法再分配新的內(nèi)存用于存儲(chǔ)數(shù)據(jù)肉微。*

深復(fù)制是什么鬼
var b = a
b = 2 //這個(gè)時(shí)候改變 b

a 完全不受 b 的影響
那么我們就說(shuō)這是一個(gè)深復(fù)制
對(duì)于簡(jiǎn)單類型的數(shù)據(jù)來(lái)說(shuō)匾鸥,賦值就是深拷貝。
對(duì)于復(fù)雜類型的數(shù)據(jù)(對(duì)象)來(lái)說(shuō)碉纳,才要區(qū)分淺拷貝和深拷貝勿负。

這是一個(gè)淺拷貝的例子

var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true

因?yàn)槲覀儗?duì) b 操作后,a 也變了

什么是深拷貝了劳曹,就是對(duì) Heap 內(nèi)存進(jìn)行完全的拷貝奴愉。

var a = {name: 'frank'}
var b = deepClone(a) // deepClone 還不知道怎么實(shí)現(xiàn)
b.name = 'b'
a.name === 'a' // true

對(duì)于基本類型變量,簡(jiǎn)單的賦值就是深拷貝铁孵。改變一個(gè)變量锭硼,不影響賦值的變量,兩者互不干擾蜕劝。對(duì)于深淺拷貝檀头,一般只討論復(fù)雜數(shù)據(jù)類型轰异。
復(fù)雜類型變量,a等于b鳖擒,a改變導(dǎo)致b也會(huì)改變溉浙,這就是淺拷貝。因?yàn)橹皇菍tack里面的地址復(fù)制了一份而已蒋荚。復(fù)雜數(shù)據(jù)類型的深拷貝戳稽,會(huì)拷貝堆內(nèi)存里面的數(shù)據(jù),包括數(shù)據(jù)內(nèi)的引用期升,將不再引用同一個(gè)地址惊奇,而是引用新拷貝的數(shù)據(jù)的地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末播赁,一起剝皮案震驚了整個(gè)濱河市颂郎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌容为,老刑警劉巖乓序,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異坎背,居然都是意外死亡替劈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)得滤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陨献,“玉大人,你說(shuō)我怎么就攤上這事懂更≌R担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵沮协,是天一觀的道長(zhǎng)龄捡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)慷暂,這世上最難降的妖魔是什么聘殖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮呜呐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悍募。我一直安慰自己蘑辑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布坠宴。 她就那樣靜靜地躺著洋魂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上副砍,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天衔肢,我揣著相機(jī)與錄音,去河邊找鬼豁翎。 笑死角骤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的心剥。 我是一名探鬼主播邦尊,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼优烧!你這毒婦竟也來(lái)了蝉揍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畦娄,失蹤者是張志新(化名)和其女友劉穎又沾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體熙卡,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杖刷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了再膳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挺勿。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖喂柒,靈堂內(nèi)的尸體忽然破棺而出不瓶,到底是詐尸還是另有隱情,我是刑警寧澤灾杰,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布蚊丐,位于F島的核電站,受9級(jí)特大地震影響艳吠,放射性物質(zhì)發(fā)生泄漏麦备。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一昭娩、第九天 我趴在偏房一處隱蔽的房頂上張望凛篙。 院中可真熱鬧,春花似錦栏渺、人聲如沸呛梆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)填物。三九已至纹腌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滞磺,已是汗流浹背升薯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留击困,地道東北人涎劈。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沛励,于是被迫代替她去往敵國(guó)和親责语。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,394評(píng)論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,105評(píng)論 1 32
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔目派,今天18年5月份再次想寫(xiě)文章坤候,發(fā)現(xiàn)簡(jiǎn)書(shū)還為我保存起的...
    Jenaral閱讀 2,762評(píng)論 2 9
  • 昨天白筹,參加學(xué)校給退休教職工的新年團(tuán)拜會(huì)暨涌泉?jiǎng)渍率谟璐髸?huì)。 當(dāng)我登臺(tái)雙手接過(guò)那個(gè)勛章時(shí)谅摄,我在想徒河,這幾十年的教學(xué)和教...
    若是蘭香閱讀 166評(píng)論 1 1
  • 后來(lái)的后來(lái)我一想到這里就后悔的要死,我哪知道那是最后一封信送漠,從此后再也沒(méi)有男生跟我寫(xiě)信了顽照。不會(huì)有人知道我多么的...
    左小跳1981閱讀 623評(píng)論 0 0