搜索
首页web前端js教程JavaScript中函数声明与函数表达式

目前为止,我们一直没有对函数声明和函数表达式加以区别。而实际上,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。如下例子:

代码如下:

alert(sum(10,10));
function sum(num1,num2)
{
    return num1+num2;
}

以上代码完全可以正确执行,因为在代码开始执行之前,解析器就已经通过一个名为函数声明提升(function declaration hoisting)的过程,读取并将函数声明添加到执行环境中。对代码求值时,JavaScript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明函数的代码在调用它的代码后面,JavaScript引擎也能把函数声明提升到顶部。如果像下面的例子所示,把上面的函数声明改为等价的函数表达式,就会在执行的时候出现错误。

代码如下:

alert(sum(10,10));
var sum=function(num1,num2)
{
    return num1+num2;
};

以上代码会在运行的时候出现错误,原因在于函数位于一个初始化语句中,而不是一个函数声明。换句话讲,在执行到函数所在的语句之前,变量sum中不会保存有对函数的引用;而且,由于第一行代码就会导致“unexpected identifier”(意外标识符)错误,实际上也不会执行到下一行。

 

 

除了声明时候可以通过变量访问函数这一点区别之外,函数声明与函数表达式的语法其实是等价的。

注:也可以同时调用函数声明和函数表达式,例如 var sum=function sum(){}。不过,这种语法在Safari中会导致错误。

以上所述就是本文的全部内容了,希望对大家学习javascript能够有所帮助。

更多相关教程请访问 javascript教程

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
C++ 函数声明中的默认参数:全面解析其声明和用法C++ 函数声明中的默认参数:全面解析其声明和用法May 02, 2024 pm 03:09 PM

C++中的默认参数提供对函数参数指定默认值的功能,从而增强代码可读性、简洁性和灵活性。声明默认参数:在函数声明中将参数后加上"="符号,后跟默认值。用法:函数调用时,若未提供可选参数,则会使用默认值。实战案例:计算两个数之和的函数,一个参数必填,另一个可填并有默认值0。优点:增强可读性、增加灵活性、减少样板代码。注意事项:只能在声明中指定,必须位于末尾,类型必须兼容。

C++ 函数的声明和定义的顺序有什么影响?C++ 函数的声明和定义的顺序有什么影响?Apr 19, 2024 pm 01:42 PM

在C++中,函数声明和定义的顺序影响编译和链接过程。最常见的是声明在前,定义在后;也可使用“forwarddeclaration”将定义放在声明前;如果两者同时存在,编译器将忽略声明,仅使用定义。

C++ 函数声明和定义有什么区别?C++ 函数声明和定义有什么区别?Apr 18, 2024 pm 04:03 PM

函数声明告知编译器函数的存在,不包含实现,用于类型检查。函数定义提供实际实现,包含函数体。区分的关键特征包括:目的、位置、作用。理解差异对于编写有效且可维护的C++代码至关重要。

C++ 函数的声明和定义C++ 函数的声明和定义Apr 11, 2024 pm 01:27 PM

函数声明和定义在C++中是必要的,函数声明指定函数的返回类型、名称和参数,而函数定义包含函数体和实现。首先声明函数,然后在程序中使用它并传递所需的参数。使用return语句从函数中返回一个值。

C++编译错误:函数调用与函数声明不符,应该怎样解决?C++编译错误:函数调用与函数声明不符,应该怎样解决?Aug 22, 2023 pm 12:39 PM

C++编译错误:函数调用与函数声明不符,应该怎样解决?在开发C++程序时,难免会遇到一些编译错误,其中之一常见的错误是函数调用与函数声明不符的错误。这种错误广泛存在于C++程序员中,由于不注意函数声明的正确性,导致编译问题,最终浪费时间和精力修复问题,影响开发效率。避免这种错误的方法需要遵循一些规范和标准实践,下面让我们来了解一下。什么是函数调用与函数声明不

C++ 函数声明中的[[nodiscard]]:揭开忽略返回值后果的神秘面纱C++ 函数声明中的[[nodiscard]]:揭开忽略返回值后果的神秘面纱May 01, 2024 pm 06:18 PM

[[nodiscard]]属性指示函数的返回值不得忽略,否则将导致编译器警告或错误,以防止以下后果:未初始化异常、内存泄漏和错误的计算结果。

C++ 函数声明的详细语法:从语法解析到规范用法解析C++ 函数声明的详细语法:从语法解析到规范用法解析Apr 30, 2024 pm 02:54 PM

C++函数声明语法为:returnTypefunctionName(parameterType1parameterName1,...,parameterTypeNparameterNameN);,其中returnType为返回类型,functionName为函数名,parameterType为参数类型,parameterName为参数名,必须以分号结尾。

C++ 函数声明的逐步指南:涵盖每个步骤的详细说明C++ 函数声明的逐步指南:涵盖每个步骤的详细说明May 02, 2024 pm 04:33 PM

函数声明告诉编译器函数的存在,无需提供函数体。步骤如下:指定函数返回类型(void如果无返回值)定义函数名声明函数参数(可选,包括数据类型和标识符)加分号

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境