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

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

js中全局變量和局部變量初始化問題

js中全局變量和局部變量初始化問題

千萬里不及你 2018-09-13 10:10:34
var age=100;function box(){    age++;}box();//age=101box();//age=102function box(){var age=100;age++;return age; }box();//age=101;box();//age=101為什么全局變量初始化過后,調用函數會累加?而局部變量每次調用變量都會初始化一次?他們這個過程中發生了什么呢?是因為儲存方式,內存的原因??
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

第一個例子中的age在全局中聲明,即全局變量,所以age一直存在,每次調用box()時會根據作用域鏈找到全局作用域中的age,所以會一直累加;
第二個例子中的age在box中聲明,即局部變量,agebox調用時創建,調用完box()即被銷毀,下次再調用box時會創建一個新的age,調用完再銷毀,所以無法實現累加,如果想實現的話,可以使用閉包,創建閉包之后對私有變量處于引用狀態,不會銷毀,存在內存中,可以實現累加。

function box(){    var age=100;    return function() {
        age++;        console.log(age);
    }
}var b = box();
b(); // 101b(); // 102

學習Javascript閉包(Closure)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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