JS的作用域链,内存空间,闭包等等可以参考什么语言来理解?

JS的一些高级特性,比如作用域链内存空间闭包等等可以参考什么语言来理解?

因为我了解JS的原型继承在设计的时候有参考IO这门语言,IO是一门,个人觉得是比JS好理解好多的语言,因为它太简单了。我参考着IO来理解JS原型继承原型链对象方面的内容的话,发现理解的更好,更深刻。虽然JS的其他特性网上有很多的文章来解答,但是发现总是有点深奥,所以希望有人可以推荐下和它类似的语言,但是比较好理解的,然后我去参考着理解。

之前在简书上看到一个系列讲解js的文章,说的非常详细,但是发现他讲的内存空间等等内容我还是不能很好的理解,自己的水平有限,求推荐?

阅读 4k
4 个回答

javascript本身就是综合了c /java等语言的设计方式进行改良的,内存空间的理解建议你要对浏览器工作机制进行深入理解,原型链个人觉得理解与比例解就在一念之间,相对来说在JS的学习中算是中等难度的。闭包只是个抽象的词,从另一面就是来说明作用域的。对于原型链的了解建议去看JQzepto这些框架源码,如果要了解作用域空间等,红宝书是必修课,后续在读犀牛书,两本葵花宝典,读完至少一两年。。。哈哈哈哈------

内存不用太纠结,不同的引擎实现有可能不同,重点是关心常用的数据结构就好,JS 里最常用的无非也就是数组(功能兼容数组、列表、队列、栈)和对象(功能兼容字符串键的Hash表)。

作用域链可以简单的理解,哪写的代码就在其所在的 function 函数体有效(var),而后来的 constlet 是块级作用域,即在最近的 {} 内有效,注意一下函数申请和变量申明提升的问题,关于这个可以参考 C# 或 Java,都差不多。

只要函数是一等公民的语言(即函数可以当作引用来传递),基本上都存在闭包。闭包同样遵循上面的原则,写代码的时候,它是在哪个作用域内,运行的时候它就可以访问哪个作用域内的变量。只是在 this 这个问题上要麻烦一点,可以参考:JavaScript 的 this 批向问题深度解析

理解JavaScript,可以参考函数式语言来理解,比如lisp,heckshell,scala。

我是个爱钻牛角尖的人,为了理解闭包,翻看了很多书,大多都只涉及表象,深入些的谈到 first-class function 和语法作用域即止。直到开始看《编译原理》,才发现闭包后面是一大块知识,正是缺乏编译原理的知识,我才无法完全理解闭包。所以,我现在觉得要深入理解语言的某些特性,如作用域、垃圾回收等,找该领域的经典书籍看一看是个不错的选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题