console.log是同步還是異步?眼見不一定為實

分享一下今天做的一次實驗!
問題重現(xiàn):打開瀏覽器執(zhí)行以下代碼

var a = {b:{c:1}};
console.log(a);
a.b.c = 2;
控制臺看到打印出來的是什么?{b:{c:2}}對嗎采郎?由此你得出console.log應該是異步的結果。我能告訴你眼見不一定為實么狂魔?你所看到的是錯誤的蒜埋!拿同樣的代碼放到node環(huán)境下跑你就會發(fā)現(xiàn)打印出的是{b:{c:1}}。
是不是感覺很無奈最楷?同一個V8引擎整份,執(zhí)行結果最后居然不一樣!
事實上籽孙,執(zhí)行結果是一樣的烈评,只不過你看到的不一樣罷了!原因就出在瀏覽器控制臺所見不一定為實犯建。
嘗試把打印的代碼換一下讲冠,改為console.log(a.b.c)你會發(fā)現(xiàn)這次是跟node下一致了。我也不想在此延伸瀏覽器控制臺的問題了适瓦,實際上相當于一種懶加載沟启,這也是為什么你可以在控制臺無限查看Object的prototype了。
回到問題本身犹菇,console.log究竟是同步還是異步?我覺得console.log應該和alert一樣是同步的芽卿,會阻塞線程執(zhí)行揭芍。丟一個問題這里:

function test() {
console.log('a'); // 為什么加上console.log之后,執(zhí)行不會報Maximum call stack size exceeded
test();
}
test();

答案:
其實在 console.log 執(zhí)行的時候卸例,chrome 會對 log 的對象求一次值称杨,打印出來是 Object 肌毅,可以繼續(xù)展開的。但當你展開控制臺中的 Object 的時候姑原,chrome 又會對它求一次值悬而,這一次是顯示它的屬性。所以才會有前后打印的東西不一樣的情況發(fā)生锭汛,因為對象引用的實體的值改變了笨奠。
如果把 console.log(a) 改為 console.log(JSON.stringify(a)), 這時就會輸出
{"b":{"c":1}}
是剛開始期望的結果唤殴。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末般婆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朵逝,更是在濱河造成了極大的恐慌蔚袍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件配名,死亡現(xiàn)場離奇詭異啤咽,居然都是意外死亡,警方通過查閱死者的電腦和手機渠脉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門宇整,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人连舍,你說我怎么就攤上這事没陡。” “怎么了索赏?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵盼玄,是天一觀的道長。 經(jīng)常有香客問我潜腻,道長埃儿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任融涣,我火速辦了婚禮童番,結果婚禮上,老公的妹妹穿的比我還像新娘威鹿。我一直安慰自己剃斧,他們只是感情好,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布忽你。 她就那樣靜靜地躺著幼东,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上根蟹,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天脓杉,我揣著相機與錄音,去河邊找鬼简逮。 笑死球散,一個胖子當著我的面吹牛,可吹牛的內容都是我干的散庶。 我是一名探鬼主播蕉堰,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼督赤!你這毒婦竟也來了嘁灯?” 一聲冷哼從身側響起躲舌,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羹奉,沒想到半個月后约计,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年筒占,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜘犁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屈扎,靈堂內的尸體忽然破棺而出鹰晨,到底是詐尸還是另有隱情滑沧,我是刑警寧澤巍实,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布哩牍,位于F島的核電站,受9級特大地震影響膝昆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜妹窖,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一收叶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧判没,春花似錦、人聲如沸澄峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玻佩。三九已至夺蛇,卻和暖如春酣胀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚脉。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工牺氨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夷狰。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓郊霎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親书劝。 傳聞我的和親對象是個殘疾皇子进倍,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,132評論 0 13
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理猾昆,服務發(fā)現(xiàn),斷路器骡苞,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 生活喜歡單純傻傻的精靈 復雜的心情 比較著功利 錯過了美好的風景 人生總有些揮之不去的陰影 做錯了決定 還想著回去...
    微心詩話閱讀 239評論 0 0
  • 我這里依然以張三為例子,讓大家來看看亚铁,在什么樣的情況下蝇刀,張三患的是疑病癥。 張三一年前投資失敗徘溢,加上...
    夏雨凡星閱讀 799評論 0 1
  • 小強油畫閱讀 303評論 2 1