广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >javascript中有没有main函数
  • 557
分享到

javascript中有没有main函数

2024-04-02 19:04:59 557人浏览 泡泡鱼
摘要

这篇文章主要讲解了“javascript中有没有main函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中有没有main函数”吧!

这篇文章主要讲解了“javascript中有没有main函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中有没有main函数”吧!

javascript中没有main函数。main函数常用于Java与C语言中,又称主函数,是要求有返回值的,返回0代表程序正常执行成功,返回非0值代表程序异常结束;而在JavaScript中不存在该函数。

教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

javascript有main函数吗

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标准中,只有以下两种定义方式是正确的:

int main(void)
int main(int arGC, char *argv[]) // char *argv[]可以写成char **argv

参数

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 指向全局对象。

从上面列举的这些特性可以看出,如果把全局作用域当成一个对象的话,那么实际上它就是全局对象。另外,这也解释了在全局作用域中,下面的四条语句为什么是等价的:

var a = 1;
a = 1;
window.a = 1;
this.a = 1;

3. 虚构的main函数

既然都是作用域,为什么要有一个特殊的全局作用域呢?我们总是喜欢简单化、一致性,而尽量避免复杂化、特殊性。所以很自然地,我们会想能否让全局作用域看起来跟函数作用域没什么区别?答案是肯定的。我们可以做这样的构想:

我们想象,在JS引擎执行源文件时,会将文件中的代码包装到一个叫做main的函数中。然后把这个main函数作为程序的入口。

也就是说,假设一个JS文件中有这样的代码:

var a = 1;
var b = 2;
 
function add(x, y) {
  var z = x + y;
  return z;
}
console.log(add(a, b));

JS引擎在程序开始执行前会把它包装成一个main函数:

// 虚构的main函数
function main() {
  var a = 1;
  var b = 2;
 
  function add(x, y) {
    var z = x + y;
    return z;
  }
 
  console.log(add(a, b));
}

然后,调用这个main函数:

main._current_scope_ = window; // 将全局作用域(对象)设为window
main.call(window) // 将this指向window

4. 意义何在?

(1) JS也有了入口函数main,跟其他语言一致了。

(2) 省去了全局作用域的概念,或者说全局作用域也成了函数作用域。

(3) 通过上面对main函数的调用过程,可以明白全局作用域中的那些特殊性质的由来。

(4) 最后一点,将所有JS源码当成一个函数,是为了后面讲事件队列、事件循环做铺垫。

感谢各位的阅读,以上就是“javascript中有没有main函数”的内容了,经过本文的学习后,相信大家对javascript中有没有main函数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: javascript中有没有main函数

本文链接: https://www.lsjlt.com/news/97242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript中有没有main函数
    这篇文章主要讲解了“javascript中有没有main函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中有没有main函数”吧! ...
    99+
    2022-10-19
  • php有没有main函数
    这篇文章主要讲解了“php有没有main函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php有没有main函数”吧!PHP中没有main函数;该函数常用于java与C语言中,又被称为主函...
    99+
    2023-07-02
  • php没有main函数吗
    PHP中没有main函数;该函数常用于java与C语言中,又被称为主函数,作为绝大部分C程序唯一的入口,是要求有返回值的,返回0代表程序正常执行成功,返回非0值代表程序异常结束;而在PHP中不存在该函数。本文操作环境:Windows10系统...
    99+
    2022-06-16
    php
  • javascript中有没有split函数
    这期内容当中小编将会给大家带来有关javascript中有没有split函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 javascrip...
    99+
    2022-10-19
  • JavaScript中有没有memset函数
    小编给大家分享一下JavaScript中有没有memset函数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! JavaScript中没有memset()函数;m...
    99+
    2022-10-19
  • Python中没有main函数的原因是什么
    Python中没有main函数的原因是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么必须强制执行主函数这些语言是已编译的语言,需要将代码编译到可执行的二进制文件中,以...
    99+
    2023-06-16
  • Python没有main函数的原因是什么
    为什么必须强制main函数作为入口?这些语言都是编译语言,需要将代码编译成可执行的二进制文件。为了让操作系统/引导程序找到程序的开头,需要定义这样一个函数。简而言之,需要在大量可执行的代码中定义一个至关重要的的开头。不难看出,对于这些语言来...
    99+
    2023-05-14
    Python main
  • javascript有没有根号函数
    本篇内容介绍了“javascript有没有根号函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • JavaScript有没有命名函数
    这篇文章主要介绍“JavaScript有没有命名函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript有没有命名函数”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • 详细聊一聊为什么Python没有main函数
    目录前言为什么必须强制main函数作为入口?总结前言 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和...
    99+
    2023-03-19
    python没有main python没有main函数怎么运行 python没有主函数
  • javascript语言中有没有函数重载
    这篇文章将为大家详细讲解有关javascript语言中有没有函数重载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 javascript没有函...
    99+
    2022-10-19
  • JavaScript函数有没有返回值
    小编给大家分享一下JavaScript函数有没有返回值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! JavaScript函数有返回值。如果函数中包含retur...
    99+
    2022-10-19
  • JavaScript普通函数有没有原型
    本篇内容介绍了“JavaScript普通函数有没有原型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JavaScript普通函数有原型。在J...
    99+
    2023-07-04
  • javascript有没有首字母大写函数
    这篇文章主要介绍javascript有没有首字母大写函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! javascript中没有首字母大写函数;但可以利...
    99+
    2022-10-19
  • linux中有没有access函数
    这篇“linux中有没有access函数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux中有没有access函数”文...
    99+
    2023-06-30
  • linux内核是否有main函数
    本篇内容主要讲解“linux内核是否有main函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux内核是否有main函数”吧!linux内核有main函数;main函数是程序的入口,ma...
    99+
    2023-07-05
  • c++ main函数的参数有哪些
    C++的main函数通常有两个参数,它们是:1. argc(argument count):表示命令行参数的个数,包括执行文件本身。...
    99+
    2023-09-05
    c++
  • javascript中没有名称的函数是什么
    这篇文章主要讲解了“javascript中没有名称的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中没有名称的函数是什么”吧!在javascript中,没有名称...
    99+
    2023-06-14
  • php中有没有构造函数
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php中有没有构造函数?php 构造函数__construct(mixed ...$values = ""): voidPHP 允许开发者在一个类中定...
    99+
    2020-02-23
    php
  • php有没有mysql_connect函数
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php有没有mysql_connect函数mysql_connect() 函数打开非持久的 MySQL 连接。语法mysql_connect(server,user,...
    99+
    2020-02-29
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作