内存在 JavaScript 中是如何工作的?有栈吗?一堆?内存管理是如何工作的?
变量和它在内存中的位置之间的绑定何时发生?运行前还是运行时?
JavaScript中有模块或类似的东西吗?
另外,你会说 JS 是可移植的吗?可靠吗?请对您的回答做一个简短的解释。
我在互联网上寻找答案,但我似乎没有找到任何答案。快速回答也值得赞赏。
内存在 JavaScript 中是如何工作的?有栈吗?一堆?内存管理是如何工作的?
变量和它在内存中的位置之间的绑定何时发生?运行前还是运行时?
JavaScript中有模块或类似的东西吗?
另外,你会说 JS 是可移植的吗?可靠吗?请对您的回答做一个简短的解释。
我在互联网上寻找答案,但我似乎没有找到任何答案。快速回答也值得赞赏。
内存是在 javascript 中为你管理的,所以你不必担心它,除了确保你不使用大量的内存。当没有对对象的引用或超出范围时,垃圾收集器将释放该对象。它在幕后的工作方式实际上取决于实现,而不是由语言定义。
甚至函数框架(例如局部变量)也以这种方式工作(而不是传统的面向堆栈的方式),它允许 javascript“闭包”,这些函数框架是在没有嵌入式函数引用它们之前不会释放的函数框架。
Javascript 代码本身完全独立于机器,因此非常便携。在实践中,应用程序的可移植性通常更多地取决于与 javascript 交互的库(例如浏览器 DOM),而不是语言。它由一系列 ECMA 规范记录,并且该规范有不同的版本号,随着语言的发展定义了各种新功能。
我认为 javascript 非常可靠,只要您不尝试使用最近引入的在不同实现中不可用的功能,很少有真正的 javascript 问题。有大量的跨浏览器兼容性问题,但几乎都不是语言本身,而是浏览器 DOM 或语言与 DOM 之间的交互。
我不确定您所说的“模块”是什么意思。
Javascript 是一种解释性语言,因此变量和它在内存中的位置之间没有固定的绑定。所有变量都由它们的名称引用,由实现决定如何最好地解决名称和存储值的特定内存之间的连接。
A. 只有堆。Javascript 使用自动垃圾收集。我可以假设您有使用 C/C++ 的经验吗?在 JS 中,成功的秘诀几乎是:“忘记所有关于内存管理的事情,你会没事的”。
B. 绑定发生在运行时。请记住,Javascript 不是编译语言,因此没有编译时,只有运行时。
C. 像所有 c 风格的语言一样,Javascript 使用 % 作为模数运算符,正如快速的谷歌搜索所揭示的那样。
D. 它非常便携,因为它在浏览器上运行,而不是直接在系统上运行。几乎所有运行 Firefox 或 Chrome 的系统都将运行 Javascript,这意味着 MS Windows、Linux、Mac、BSD 以及任何现代系统。
D'。Javascript有几种实现。询问“Javascript 可靠吗?” 就像问:“汽车可靠吗?”。有许多不同的汽车,它们或多或少是可靠的;Javascript 也一样。