JavaScript 中的内存是如何工作的?有栈吗?一堆?内存管理如何工作?
变量与其在内存中的位置之间的绑定(bind)何时发生?在运行之前还是运行期间?
JavaScript 中有模块或类似的东西吗?
另外,你认为 JS 是可移植的吗?并且可靠?请对您的答案进行简短解释。
我在互联网上寻找答案,但似乎没有找到任何答案。快速回答也将受到赞赏。
最佳答案
内存是在 javascript 中为您管理的,因此您实际上不必担心它,除了确保您不会使用大量的内存之外。当对象不再有引用或者超出范围时,垃圾收集器将释放该对象。它的幕后工作方式实际上取决于实现,而不是由语言定义的。
甚至函数框架(例如局部变量)也以这种方式工作(而不是传统的面向堆栈的方式),它允许 JavaScript“闭包”,这些函数框架在没有嵌入函数再引用它们之前不会被释放。
Javascript 代码本身是完全独立于机器的,因此它非常可移植。实际上,应用程序的可移植性通常更多地取决于 javascript 与之交互的库(例如浏览器 DOM),而不是语言。它由一系列 ECMA 规范记录,并且该规范有不同的版本号,随着语言的发展定义了各种新功能。
我认为 javascript 非常可靠,只要您不尝试使用最近引入的在不同实现中不可用的功能,就很少有真正的 javascript 问题。有大量的跨浏览器兼容性问题,但这些问题几乎都不是语言本身,而是浏览器 DOM 或语言与 DOM 之间的交互。
我不确定你所说的“模块”是什么意思。
Javascript 是一种解释性语言,因此变量与其在内存中的位置之间没有固定的绑定(bind)。所有变量都通过其名称进行引用,并且由实现来确定如何最好地解析名称与存储值的特定内存片段之间的连接。
关于javascript - 内存和一些有关 JavaScript 的更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637787/