亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js函數的父級變量如果未被內部函數引用,是否會保存在作用域鏈中?

js函數的父級變量如果未被內部函數引用,是否會保存在作用域鏈中?

慕虎7371278 2018-10-10 13:37:37
window.onload = function(){    var a = 1;    function test() {        var b = new Array(10000);        var c = new Array(10000);        // 1.創建函數inner時會創建inner的作用域鏈, 此時inner的作用域鏈中是不是保存a、b、c 三個變量?如果不是那是保存的什么?        function inner(){            console.log(b);        }        // 2.執行函數a時,會創建a的執行環境,其中包含作用域鏈,但是通過chrome控制臺觀察發現,斷點停留在inner內部時,父級閉包作用域中只有引用的變量b,而沒有變量c,是因為作用域鏈中只保存引用的變量嗎?        // 3.未被引用的變量c是否被標記回收?        inner();    }    test();};問題描述請看代碼中的注釋,有可能描述錯誤,請指正。請幫忙回答這三個問題。附圖 
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

創建inner函數時,會復制一份外部函數的作用域鏈,賦值給inner函數的內部屬性[[scope]],當運行inner時才會創建inner函數的作用域鏈,并且將inner函數的this,arguments,參數,聲明的變量推入到作用域鏈的頂端;

好像控制臺只會顯示用過的作用域鏈上的變量,但是其他的同樣會保存

當你運行inner時,test都還沒有運行完,自然c不會被回收


查看完整回答
反對 回復 2018-11-17
  • 1 回答
  • 0 關注
  • 725 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號