请注意,这个问题是从浏览器的 Angular 提出的。
我一直在深入研究 JavaScript 的内部结构,并意识到任何一段 JavaScript 代码最终都是由引擎执行的。
根据我的理解,引擎“知道”如何处理 JavaScript 函数,它应该:
- 将其内置(ECMAScript 规范)
- 通过浏览器嵌入(Web API 规范)
那么,任何最细粒度级别的 JavaScript 函数最终都是在 ECMAScript 规范或浏览器的 Web API 规范中定义的,这样说对吗?
最佳答案
您的意思的答案可能是"is";您所问问题的答案是“否”;-)
您在https://developer.mozilla.org/en-US/docs/Web/JavaScript处看到的所有被描述为“JavaScript”的内容由 ECMAScript 标准定义。从实现 Angular 来看,这意味着它内置于 JavaScript 引擎中。
浏览器定义了一系列附加功能,最显着的是 DOM API,请参阅 https://developer.mozilla.org/en-US/docs/Web/Reference/API 。在实现方面,这些函数和对象由相应 JavaScript 引擎的相应嵌入器(即在您的场景中的浏览器)提供。 JavaScript 引擎为嵌入器提供了指定此类事物的设施,从概念上讲,“使用这些方法定义此对象,并且这些是调用这些方法时应该执行的函数”。
其他嵌入器提供不同的功能,例如节点:https://nodejs.org/docs/latest/api/ 。一般来说,嵌入器所做的就是将他们想要的任何东西暴露给 JavaScript 方面,以便在 JavaScript 引擎内运行的程序可以与世界交互。
当然还有脚本文件和模块中定义的 JavaScript 函数,即您自己的代码和导入。显然,这些既没有内置到引擎中,也没有内置到浏览器中,但引擎知道要为它们做什么,因为它知道如何执行您提供的源代码。
关于javascript - 所有 JavaScript 函数最终都会归结为 ECMAScript 或 Web API 规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342821/