創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始,先為新興等服務(wù)建站,新興等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新興企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。小編給大家分享一下關(guān)于前端面試題的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
1、什么是閉包?
概念
閉包是一個(gè)過(guò)程,它記住了聲明scope下的變量,在別的scope下,調(diào)用函數(shù)時(shí) ,依然可以讀取到這些變量。
原理分析
function outer(){ let n = 1; function inner(){ console.log(n); } return inner; } const fn = outer(); fn();
以上案例,提出來(lái)的問(wèn)題是:outer執(zhí)行結(jié)束之后,函數(shù)空間消亡了,inner的n為什么還有值?原理是什么?
在我的理解里,閉包可以想象成一個(gè)膠囊(persistent lexical scope data \ back pack),包裹住了變量n粘在函數(shù)inner上,一起返回給了fn,在memory中開(kāi)辟一個(gè)存儲(chǔ)空間放置這個(gè)膠囊。如果代碼中有fn在執(zhí)行,它會(huì)一直訪問(wèn)這個(gè)膠囊里的n值。什么時(shí)候不再有fn了,什么時(shí)候這個(gè)膠囊脫落掉消亡。
用途
兩個(gè)用途:不污染global的變量池和變量值的暫存
2、 let和var的區(qū)別,let的產(chǎn)生背景?
區(qū)別
這兩個(gè)關(guān)鍵詞的最關(guān)鍵的區(qū)別是scope,var是認(rèn)定的scope不包含for,if等這類函數(shù)塊的,let把for,if等函數(shù)塊認(rèn)定為一個(gè)scope。
目的
有一些需要在函數(shù)塊中記住變量屬性的表達(dá)式,ES5需要加上花括號(hào),這樣子嵌套的層級(jí)會(huì)很多。ES6的時(shí)候就發(fā)明了let來(lái)簡(jiǎn)化代碼。
3、 var的變量提升底層原理是什么?
本質(zhì)上是由JS編譯過(guò)程導(dǎo)致的。
代碼的執(zhí)行分為兩個(gè)步驟
對(duì)聲明進(jìn)行編譯——為var或function分配地址內(nèi)存。
執(zhí)行——進(jìn)行正常的賦值。
例如var a = 2; 編譯器先不會(huì)管a = 2這一賦值步驟。它最先要做的是把var a編譯掉,而運(yùn)算操作留在原地。聲明在編譯角度上被移動(dòng)到了作用域的頂端。這就是提升的底層原理。
拓展話題——TDZ暫時(shí)死區(qū)
aVar的值符合提升的原則。aLet就有點(diǎn)意思了,它拋出來(lái)的錯(cuò)誤實(shí)際上就是暫時(shí)死區(qū)錯(cuò)誤。簡(jiǎn)單來(lái)說(shuō),從聲明到到let的運(yùn)算步驟為止的這段時(shí)空被鎖死,外界在此期間尋求訪問(wèn),不被允許。
4、 模塊化思想
為什么要使用模塊化?
模塊化思想即最小暴露原則。隱藏掉別人不需要知道的代碼細(xì)節(jié),僅提供需要使用的API。保護(hù)代碼的安全性和可維護(hù)性。
如何模塊化?
書(shū)寫(xiě)一段模塊的要點(diǎn)有二:1、要使用閉包原理。2、函數(shù)至少被調(diào)用執(zhí)行過(guò)一次。
方法一:工廠模式
function module(){ let text = "baz"; let publicAPI = { baz: fuction (){ console.log(text); } } return publicAPI; } var foo = module(); foo.bar();
方法二:?jiǎn)卫J剑↖IFE)
var foo = (function module(){ let text = "baz"; let publicAPI = { baz: function(){ console.log(text); } return pubilcAPI; } })(); foo.bar()
看完了這篇文章,相信你對(duì)關(guān)于前端面試題的案例分析有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!