对于我来说,变量在Javascript中很容易理解:如果变量不在本地范围内,那么它就是全局对象中的一个字段。
但是Javascript命令怎么样?如果我只是在文件中写入Javascript命令(在任何函数之外),那么Javascript引擎将如何解释它?
----- file.js -----
console.log('hai:DDD');
--- end of file ---
是否会使用命令创建某种“全局”或“主”function
类型对象,然后执行它?如果有多个带代码的文件怎么办?
我想这个问题只适用于node.js,因为在浏览器中,所有Javascript代码都是事件处理程序
答案 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 Record是object environment record,其绑定对象是全局对象(15.1)。该 全局环境的outer environment reference为空。
全局对象(15.1)
用作绑定全局环境的环境记录的唯一对象。
全局代码是被视为ECMAScript 程序的源文本。特定程序的全局代码不包含任何被解析为 FunctionBody 的一部分的源文本。
全球执行上下文(10.4.1.1)
全局代码的执行上下文。
答案 4 :(得分:0)
不,javascript是一种脚本语言,没有插入点。
代码行按照javascript解释器遇到的顺序执行。
如果页面上包含多个文件,则在其中声明的函数和变量将被添加到全局范围(除非它们在匿名函数中声明)