鍍金池/ 問答/HTML/ 在js中先申明一個(gè)空數(shù)組,先打印,再push一個(gè)值,為什么打印時(shí)會(huì)有值

在js中先申明一個(gè)空數(shù)組,先打印,再push一個(gè)值,為什么打印時(shí)會(huì)有值

let a=[]
console.log(a)
a.push(1)

控制臺(tái)顯示是空數(shù)組,
clipboard.png

實(shí)際展開會(huì)有值,為什么會(huì)這樣?
clipboard.png

回答
編輯回答
薔薇花

因?yàn)?code>Array在js里面是 引用類型,雖然你console.log在前push在后,但是因?yàn)?strong>引用類型是傳址不是傳值,所以你在控制臺(tái)看到的數(shù)組會(huì)隨著數(shù)組的后繼操作而更新

2017年9月19日 07:33
編輯回答
墨沫

因?yàn)槟泓c(diǎn)擊展開的時(shí)候,它是實(shí)時(shí)讀取數(shù)據(jù),所以你能看的到之后push的值。換個(gè)說(shuō)法,就是console.log的時(shí)候只是那個(gè)時(shí)間的一個(gè)快照,所以出來(lái)是一個(gè)空數(shù)組,但是它還保持著與內(nèi)存之間的聯(lián)系。你點(diǎn)擊展開的時(shí)候,瀏覽器實(shí)時(shí)從內(nèi)存中讀取到了它里面的值。不知道這樣說(shuō),你能否理解?

2017年10月7日 12:21
編輯回答
逗婦乳

根本原因就是 因?yàn)槭? 引用類型哇

2017年7月11日 01:39
編輯回答
大濕胸

這個(gè)例子充分體現(xiàn)了console.log是異步的, 所以盡量不要用console去調(diào)試你的app.

上面那個(gè)空的只是一個(gè)快照,點(diǎn)開的時(shí)候才是真實(shí)的數(shù)據(jù)。

如果你把a(bǔ)改成基本類型就絕對(duì)不會(huì)有這個(gè)問題了。

2018年3月1日 02:15