Javascript中是否存在“全局函数”或“主函数”?

时间:2016-02-29 18:30:45

标签: javascript node.js

对于我来说,变量在Javascript中很容易理解:如果变量不在本地范围内,那么它就是全局对象中的一个字段。

但是Javascript命令怎么样?如果我只是在文件中写入Javascript命令(在任何函数之外),那么Javascript引擎将如何解释它?

----- file.js -----
console.log('hai:DDD');
--- end of file ---

是否会使用命令创建某种“全局”或“主”function类型对象,然后执行它?如果有多个带代码的文件怎么办?

我想这个问题只适用于node.js,因为在浏览器中,所有Javascript代码都是事件处理程序

5 个答案:

答案 0 :(得分:3)

Javascript没有main功能。它从顶部开始,一直向下运行。

在Node.js中,变量存储在module scope中,这基本上意味着它们不是全局的。在某种程度上,你可以想象你在Node.js中运行的任何代码都被包裹起来:

(function(exports, require, module, __filename, __dirname) {
   ...
})();

但您似乎对浏览器存在误解。并非所有JS代码都是浏览器中的事件处理程序。如果您只是在浏览器中运行基本脚本,它也将填充全局范围。

var myGlobal = "I'm available to everyone";

答案 1 :(得分:2)

顾名思义,Javascript是一种由某些Javascript解释器解释的脚本语言。因此,"主要功能"可以认为是整个文件,入口点是脚本第一行的第一个字符。通常,脚本要执行的全部功能都包含在一个加载页面的函数中,但这并不是必需的,只是方便。

答案 2 :(得分:1)

以下是视频的链接..观看此内容他解释了javascript的工作原理。 link to the video

可视化JavaScript工作原理的工具。 link to the tool

如果你想在加载窗口后运行,则有window.onload,$(document).ready();如果您正在使用Jquery。

答案 3 :(得分:1)

JavaScript中没有全局函数,但有一些类似的概念:

  • 全球环境(10.2.3

      

    全球环境是一个独特的Lexical Environment   在执行任何ECMAScript代码之前创建。全球   环境Environment Recordobject environment record,其绑定对象是全局对象(15.1)。该   全局环境的outer environment reference为空。

  • 全局对象(15.1

    用作绑定全局环境的环境记录的唯一对象。

  • 全球代码(10.4.110.1

      

    全局代码是被视为ECMAScript 程序的源文本。特定程序的全局代码不包含任何被解析为 FunctionBody 的一部分的源文本。

  • 全球执行上下文(10.4.1.1

    全局代码的执行上下文。

答案 4 :(得分:0)

不,javascript是一种脚本语言,没有插入点。

代码行按照javascript解释器遇到的顺序执行。

如果页面上包含多个文件,则在其中声明的函数和变量将被添加到全局范围(除非它们在匿名函数中声明)