javascript - 内存和一些有关 JavaScript 的更多信息

标签 javascript memory-management portability reliability

  1. JavaScript 中的内存是如何工作的?有栈吗?一堆?内存管理如何工作?

  2. 变量与其在内存中的位置之间的绑定(bind)何时发生?在运行之前还是运行期间?

  3. JavaScript 中有模块或类似的东西吗?

  4. 另外,你认为 JS 是可移植的吗?并且可靠?请对您的答案进行简短解释。

我在互联网上寻找答案,但似乎没有找到任何答案。快速回答也将受到赞赏。

最佳答案

内存是在 javascript 中为您管理的,因此您实际上不必担心它,除了确保您不会使用大量的内存之外。当对象不再有引用或者超出范围时,垃圾收集器将释放该对象。它的幕后工作方式实际上取决于实现,而不是由语言定义的。

甚至函数框架(例如局部变量)也以这种方式工作(而不是传统的面向堆栈的方式),它允许 JavaScript“闭包”,这些函数框架在没有嵌入函数再引用它们之前不会被释放。

Javascript 代码本身是完全独立于机器的,因此它非常可移植。实际上,应用程序的可移植性通常更多地取决于 javascript 与之交互的库(例如浏览器 DOM),而不是语言。它由一系列 ECMA 规范记录,并且该规范有不同的版本号,随着语言的发展定义了各种新功能。

我认为 javascript 非常可靠,只要您不尝试使用最近引入的在不同实现中不可用的功能,就很少有真正的 javascript 问题。有大量的跨浏览器兼容性问题,但这些问题几乎都不是语言本身,而是浏览器 DOM 或语言与 DOM 之间的交互。

我不确定你所说的“模块”是什么意思。

Javascript 是一种解释性语言,因此变量与其在内存中的位置之间没有固定的绑定(bind)。所有变量都通过其名称进行引用,并且由实现来确定如何最好地解析名称与存储值的特定内存片段之间的连接。

关于javascript - 内存和一些有关 JavaScript 的更多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637787/

相关文章:

html - 你如何处理 Internet Explorer?

python - 如何将基于 Python PyQt 的程序转换为 Linux 中的可移植包?

javascript - 如何替换 TextBox 中的 <br/>

javascript - Ramda.map over Immutable.List 如何返回列表而不是数组?

java - 如何检查 ConcurrentLinkedQueue 是否为 GC 留下垃圾(取消引用的实例)?

python - 如何从 Dockerized Python Web 应用程序提供静态文件?

javascript - 如何在 openweather API 中获取地理定位

javascript - 遍历嵌套的对象数组,呈现不同的标记

c - 如何在C中使用malloc正确分配内存

java - 尝试通过 python 脚本启动 Minecraft 服务器时出现内存问题