一:執(zhí)行環(huán)境及作用域 和 變量對象
執(zhí)行環(huán)境是javascript中最為重要的一個(gè)概念砰苍。每個(gè)執(zhí)行環(huán)境都有一個(gè)與之關(guān)聯(lián)的變量對象(保存執(zhí)行環(huán)境中所有定義的變量和函數(shù))。二:
當(dāng)代碼在執(zhí)行環(huán)境中執(zhí)行時(shí)阱高,會(huì)創(chuàng)建一個(gè)作用域鏈赚导。作用域鏈本質(zhì)是一個(gè)指向變量對象的指針列表。
如果執(zhí)行環(huán)境是函數(shù)赤惊,則將其活動(dòng)對象(最開始時(shí)只包含一個(gè)變量->argument對象)作為變量對象吼旧。ps:argument對象在全局環(huán)境中是不存在的.
(基于2條件下)作用域鏈中的下一個(gè)變量對象來自外部環(huán)境,而再下一個(gè)變量對象則來自下下個(gè)外部環(huán)境未舟。這樣圈暗,一直延續(xù)到全局執(zhí)行環(huán)境;全局執(zhí)行環(huán)境的變量對象始終都是作用域鏈中的最后一個(gè)對象掂为。
三:js沒有塊級作用域**</pre>
注:在js中if語句中的變量申明會(huì)將變量添加到if外部的執(zhí)行環(huán)境中(當(dāng)前是指window變量);此時(shí)window變量對象中有一個(gè)值是 color = 'blue'
注:在js中for循環(huán)結(jié)束后依然會(huì)存在循環(huán)外部的執(zhí)行環(huán)境中员串,即window變量對象有 i = 10四:
閉包是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)菩掏,創(chuàng)建閉包的常見方式,就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)昵济。
//創(chuàng)建函數(shù)
//調(diào)用函數(shù)
注:createComparisonFunction()函數(shù)返回后智绸,其執(zhí)行環(huán)境的作用域鏈會(huì)被銷毀,但它的活動(dòng)對象仍然會(huì)留在內(nèi)存中访忿,匿名函數(shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對象
以上是作用域鏈的這種配置機(jī)制引出了一個(gè)副作用瞧栗,即閉包只能獲取外部函數(shù)任何變量的最后一個(gè)值
修改:
最后
“相信有很多想學(xué)前端的小伙伴,今年年初我花了一個(gè)月整理了一份最適合2018年學(xué)習(xí)的web前端干貨海铆,從最基礎(chǔ)的HTML+CSS+JS到移動(dòng)端HTML5等都有整理迹恐,送給每一位前端小伙伴,53763卧斟,1707這里是小白聚集地殴边,歡迎初學(xué)和進(jìn)階中的小伙伴≌溆铮”
祝大家早日學(xué)有所成锤岸,拿到滿意offer,快速升職加薪板乙,走上人生巔峰是偷。