javascript中有没有main函数


这篇文章主要讲解了“javascript中有没有main函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中有没有main函数”吧! javascript中没有main函数。main函数常用于Java与C语言中,又称主函数,是要求有返回值的,返回0代表程序正常执行成功,返回非0值代表程序异常结束;而在JavaScript中不存在该函数。本教程操作环境:windows10系统、jav免费云主机域名ascript1.8.5版、Dell G3电脑。javascript没有main函数简介main函数,又称主函数,作为绝大部分C程序唯一的入口,是要求有返回值的,该返回值返回给(如操作系统)来表明该程序的执行状况。返回0代表程序正常执行成功,返回非0值代表程序异常结束,因此返回值需要是int整型,于是有了int main()的规范。如果使用void main(),即声明主函数没有返回值,程序虽能编译、运行成功,却不利于程序的激活者判断其状态,这对于有很多C程序构成的大型项目来说是可能是致命的。尤其从C99标准(1999年制定的官方C语言标准第二版)开始必须使用int main(),如果没有加return 0;语言,C99要求编译器自动添加(自己写上是个好习惯)。只声明main()的话,系统默认为int main()。void main()无论何时都不应该使用,因为主函数必须有返回值表明程序的运行状态(在代码中不使用void main()是一个良好的习惯)。定义在最新的C99标准中,只有以下两种定义方式是正确的:参数void:不接受任何参数;argc:代表程序所运行环境传递给程序的参数数量;argv:指向argc+1个指针的数组的首元素的指针。数组末元素为空指针,而若前面有元素,则它们指向表示从宿主环境传递给程序的参数的字符串。若argv[0]不是空指针(或argc>0),则它指向表示程序名的字符串。若程序名从宿主环境不可用则该字符串为空。返回值返回值会用作隐式调用exit()的参数,值0和EXIT_SUCCESS指示成功终止,值非0和EXIT_FAILURE指示不成功终止。示例如下:在JavaScript中虚构一个main函数
在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法。而在JavaScript中,程序是从JS源文件的头部开始运行的。但是某种意义上,我们仍然可以虚构出一个main函数来作为程序的起点,这样一来不仅可以跟其他语言统一了,而且说不定你会对JS有更深的理解。1. 实际的入口当把一个JavaScript文件交给JS引擎执行时,JS引擎就是从上到下逐条执行每条语句的,直到执行完所有代码。2. 作用域链、全局作用域和全局对象我们知道,JS中的每个函数在执行时都会产生一个新的作用域。具体来说,在执行流程进入函数时会建立一个新的作用域,在函数执行完成退出时会销毁这个作用域。函数的形参、局部变量都会绑定到这个作用域里,当函数调用完成作用域销毁时,它们随之被销毁。当然在特殊情况下,如果函数返回时作用域中的某些变量仍然被引用,那么作用域以及这些被引用的变量就不会被销毁,从而形成所谓的闭包。另一方面,我们知道函数是可以嵌套的,因而作用域也是可以嵌套的。函数在定义的时候,JS引擎会给每个函数设置一个称为[[scope]]内置属性,它指向外部函数的词法作用域。通过这种方式,多个作用域形成了链式结构,称为作用域链。通常情况下,在任意时刻只存在一条作用域链,即从正在执行的函数的作用域开始,层层上溯,直到最外层的全局作用域。[注]:作用域链上的函数就是JS源码里的层层嵌套的函数,跟函数执行时的顺序或函数调用栈无关,这也是词法作用域这个称呼的由来。全局作用域是一个特殊的作用域,它不是一个函数作用域,但它是所有函数作用域的外层作用域,也是所有作用域链的终点。因此只要程序没有退出,全局作用域总是存在的,全局作用域内的变量也是一直有效的。[函数3的作用域]–>[函数2的作用域]–>[函数3的作用域]–>[全局作用域]另外,对应于全局作用域,还有一个全局对象。在浏览器中,全局对象就是window对象。全局对象是个特殊的对象:在全局作用域中定义的变量,都会绑定到全局对象。在任意作用域中定义的变量,如果定义时没有用 var 关键字,都会绑定到全局对象。在全局作用域中, this 指向全局对象。从上面列举的这些特性可以看出,如果把全局作用域当成一个对象的话,那么实际上它就是全局对象。另外,这也解释了在全局作用域中,下面的四条语句为什么是等价的:3. 虚构的main函数既然都是作用域,为什么要有一个特殊的全局作用域呢?我们总是喜欢简单化、一致性,而尽量避免复杂化、特殊性。所以很自然地,我们会想能否让全局作用域看起来跟函数作用域没什么区别?答案是肯定的。我们可以做这样的构想:我们想象,在JS引擎执行源文件时,会将文件中的代码包装到一个叫做main的函数中。然后把这个main函数作为程序的入口。也就是说,假设一个JS文件中有这样的代码:JS引擎在程序开始执行前会把它包装成一个main函数:然后,调用这个main函数:4. 意义何在?(1) JS也有了入口函数main,跟其他语言一致了。(2) 省去了全局作用域的概念,或者说全局作用域也成了函数作用域。(3) 通过上面对main函数的调用过程,可以明白全局作用域中的那些特殊性质的由来。(4) 最后一点,将所有JS源码当成一个函数,是为了后面讲事件队列、事件循环做铺垫。感谢各位的阅读,以上就是“javascript中有没有main函数”的内容了,经过本文的学习后,相信大家对javascript中有没有main函数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: maven常用命令行怎么使用

这篇“maven常用命令行怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“maven常用命令行怎么使用”文章吧。maven通常结合ide使…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/08 17:43
下一篇 04/08 17:44

相关推荐