js類型轉(zhuǎn)換和內(nèi)存

類型之間的轉(zhuǎn)換

轉(zhuǎn)換為字符串

Console.log打印的都是字符串。

string

string.png

tostring

tostring.png

x+''

這種方法最方便废睦,1+''施符,但是需要注意,{}+''為0慈迈,存在變量里面的空對象可以若贮。

x+.png

轉(zhuǎn)換數(shù)字Number

Number(x)

Number(true)
1
Number(null)
0
Number(false)
0

parseInt(x, 10)

  • 如果字符串 string 以"0x"或者"0X"開頭, 則基數(shù)是16 (16進制).
  • 如果字符串 string 以"0"開頭, 基數(shù)是8(八進制)或者10(十進制),那么具體是哪個基數(shù)由實現(xiàn)環(huán)境決定。ECMAScript 5 規(guī)定使用10谴麦,但是并不是所有的瀏覽器都遵循這個規(guī)定蠢沿。因此,永遠都要明確給出radix參數(shù)的值匾效。
  • 如果字符串 string 以其它任何值開頭舷蟀,則基數(shù)是10 (十進制)。
parseInt('011')
11
parseInt('011',8)
9
parseInt('011',10)
11
parseInt('s')
NaN
parseInt('1s')
1

parseFloat(x)

x - 0

+x

轉(zhuǎn)換布爾Boolean

Boolean(x)

!!x更常用

是除了下面六個值被轉(zhuǎn)為false面哼,其他值都視為true野宜。

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)

js內(nèi)存圖

var a = 1
var b = 2
var c = {
name = 'cuilei'
Age = '24'
}

這些代碼對計算機做了什么。

1.變量提升

2.js中64位浮點數(shù)存儲1精绎,屬于stack數(shù)據(jù)結(jié)構(gòu)速缨。

3.存儲object時,使用heap數(shù)據(jù)結(jié)構(gòu)更靈活代乃,可以后期修改內(nèi)容旬牲。如果使用stack,后期更改順序搁吓,添加刪除內(nèi)容都要更改順序原茅,很麻煩。stack數(shù)據(jù)結(jié)構(gòu)的特點堕仔。

4.object在stack中存指定地址擂橘,地址引用heap中存儲的數(shù)據(jù)。

  1. 你買一個 8G 的內(nèi)存條
  2. 操作系統(tǒng)開機即占用 512MB
  3. Chrome 打開即占用 1G 內(nèi)存
  4. Chrome 各每個網(wǎng)頁分配一定數(shù)量的內(nèi)存
  5. 這些內(nèi)存要分給頁面渲染器摩骨、網(wǎng)絡模塊通贞、瀏覽器外殼和 JS 引擎(V8引擎)
  6. JS 引擎將內(nèi)存分為代碼區(qū)數(shù)據(jù)區(qū)
  7. 我們只研究數(shù)據(jù)區(qū)
  8. 數(shù)據(jù)區(qū)分為 Stack(棧內(nèi)存) 和 Heap(堆內(nèi)存)
  9. 簡單類型的數(shù)據(jù)直接存在 Stack 里
  10. 復雜類型的數(shù)據(jù)是把 Heap 地址存在 Stack 里

MDN內(nèi)存管理
基本類型和復雜類型(對象)引用

基本類型變量存的是值,復雜類型的變量存的是內(nèi)存地址恼五。

基本類型在賦值的時候拷貝值昌罩,復雜類型在賦值的時候只拷貝地址,不拷貝值灾馒。

var a = {}
a.self = a//self里面存了a的地址
a.self.self.self

垃圾回收

如果對象沒有被引用茎用,他就會被垃圾回收。

var fn = function(){}
document.body.onclick = fn
fn = null//fn不是垃圾
頁面關掉fn變成垃圾
ie有bug睬罗,認為fn不是垃圾

深拷貝和淺拷貝

var a = 1
var b = a
b = 2 //這個時候改變 b
a 完全不受 b 的影響
那么我們就說這是一個深復制

對于簡單類型的數(shù)據(jù)來說轨功,賦值就是深拷貝。
對于復雜類型的數(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圆米,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啄栓,更是在濱河造成了極大的恐慌,老刑警劉巖也祠,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昙楚,死亡現(xiàn)場離奇詭異,居然都是意外死亡诈嘿,警方通過查閱死者的電腦和手機堪旧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奖亚,“玉大人淳梦,你說我怎么就攤上這事∥糇郑” “怎么了爆袍?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長作郭。 經(jīng)常有香客問我陨囊,道長,這世上最難降的妖魔是什么夹攒? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任蜘醋,我火速辦了婚禮,結(jié)果婚禮上咏尝,老公的妹妹穿的比我還像新娘压语。我一直安慰自己,他們只是感情好编检,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布胎食。 她就那樣靜靜地躺著,像睡著了一般蒙谓。 火紅的嫁衣襯著肌膚如雪斥季。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天累驮,我揣著相機與錄音酣倾,去河邊找鬼。 笑死谤专,一個胖子當著我的面吹牛躁锡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播置侍,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼映之,長吁一口氣:“原來是場噩夢啊……” “哼拦焚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杠输,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤赎败,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蠢甲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僵刮,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年鹦牛,在試婚紗的時候發(fā)現(xiàn)自己被綠了搞糕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡曼追,死狀恐怖窍仰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情礼殊,我是刑警寧澤驹吮,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站膏燕,受9級特大地震影響钥屈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坝辫,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一篷就、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧近忙,春花似錦竭业、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锯玛,卻和暖如春咐柜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背攘残。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工拙友, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歼郭。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓遗契,卻偏偏與公主長得像,于是被迫代替她去往敵國和親病曾。 傳聞我的和親對象是個殘疾皇子牍蜂,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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