2016-02-29 37 views
0

对我来说,变量在Javascript中很容易理解:如果一个变量不在本地范围内,那么它就是全局对象中的一个字段。Javascript中是否有“全局函数”或“主函数”?

但Javascript命令呢?如果我只是在一个文件中写入Javascript命令(不包括任何函数),那么Javascript引擎将如何解释它?

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

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

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

+0

在JS中没有关于主入口点的概念,但是您应该在代码中定义一个入口点。 – plalx

回答

3

Javascript没有main函数。它从顶部开始,并工作到底部。

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

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

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

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

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

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

如果有多个文件都包含在页面上,他们中声明的函数和变量将被添加到全球范围内(除非他们是在匿名函数声明)

2

JavaScript是,正如其名称所暗示的,脚本语言被一些Javascript解释器解释。因此,“主要功能”可以被认为是整个文件,入口点在脚本的第一行的第一个字符处。通常,脚本要执行的所有功能都包含在一个与页面一起加载的函数中,但这不是必需的,只是方便的。

1

这里是视频的链接..看这个,他解释了javascript是如何工作的。 link to the video

以及用于可视化JavaScript工作方式的工具。 link to the tool

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

+1

尽管这些链接可能会有所帮助,但您应该在这里包含相关信息(http://stackoverflow.com/help/how-to-answer),以防万一链接出现故障。 –

1

没有在JavaScript中没有全局的功能,但也有一些类似的概念:

  • 全球环境(10.2.3

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

  • 全局对象(15.1

    的独特作为全球环境的环境记录的绑定对象。

  • 全局代码(10.4.110.1

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

  • 全局执行环境(10.4.1.1

    的全局代码执行上下文。