幕布斯6054654
2019-02-21 22:18:04
JS的一些高級特性,比如作用域鏈,內(nèi)存空間,閉包等等可以參考什么語言來理解?因?yàn)槲伊私釰S的原型繼承在設(shè)計(jì)的時候有參考IO這門語言,IO是一門,個人覺得是比JS好理解好多的語言,因?yàn)樗唵瘟?。我參考著IO來理解JS的原型繼承,原型鏈和對象方面的內(nèi)容的話,發(fā)現(xiàn)理解的更好,更深刻。雖然JS的其他特性網(wǎng)上有很多的文章來解答,但是發(fā)現(xiàn)總是有點(diǎn)深奧,所以希望有人可以推薦下和它類似的語言,但是比較好理解的,然后我去參考著理解。之前在簡書上看到一個系列講解js的文章,說的非常詳細(xì),但是發(fā)現(xiàn)他講的內(nèi)存空間等等內(nèi)容我還是不能很好的理解,自己的水平有限,求推薦?
2 回答

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個贊
內(nèi)存不用太糾結(jié),不同的引擎實(shí)現(xiàn)有可能不同,重點(diǎn)是關(guān)心常用的數(shù)據(jù)結(jié)構(gòu)就好,JS 里最常用的無非也就是數(shù)組(功能兼容數(shù)組、列表、隊(duì)列、棧)和對象(功能兼容字符串鍵的Hash表)。
作用域鏈可以簡單的理解,哪寫的代碼就在其所在的 function 函數(shù)體有效(var
),而后來的 const
和 let
是塊級作用域,即在最近的 {}
內(nèi)有效,注意一下函數(shù)申請和變量申明提升的問題,關(guān)于這個可以參考 C# 或 Java,都差不多。
只要函數(shù)是一等公民的語言(即函數(shù)可以當(dāng)作引用來傳遞),基本上都存在閉包。閉包同樣遵循上面的原則,寫代碼的時候,它是在哪個作用域內(nèi),運(yùn)行的時候它就可以訪問哪個作用域內(nèi)的變量。只是在 this
這個問題上要麻煩一點(diǎn),可以參考:JavaScript 的 this 批向問題深度解析
添加回答
舉報(bào)
0/150
提交
取消