函数声明与表达式的区别

时间:2022-05-04
本文章向大家介绍函数声明与表达式的区别,主要内容包括函数声明的基本语法、函数表达式的常见语法形式、经典案例、拓展性知识、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

HTML5学堂:函数有不同的定义方法,一种是函数声明,另一种是函数表达式,那么这两种有何区别呢?

函数声明的基本语法

function functionName(arg0, arg1, ..., argn) {
    // 函数体 - HTML5学堂
}

函数声明的重要特征:函数声明提升

在执行代码之前,会先读取函数声明,这也就意味着,可以把函数声明放在调用它的语句的后面。

函数表达式的常见语法形式

var functionName = function(arg0, arg1, ..., argn) {
    // 函数体 - HTML5学堂
};

如何理解上面这段代码呢?创建一个匿名函数(也叫拉达姆函数),并将整个函数赋值给变量functionName

在执行这句代码之前,是不能够实现functionName()函数的调用的,函数表达式和其他表达式一样,都需要在使用前赋值。

经典案例

此段代码合法

var say;
if(conditions) {
    say = function () { console.log('函数表达式-代码合法'); }
} else {
    say = function () { console.log('H5course'); }
}

此段代码不合法

if(conditions) {
    function say() { console.log('函数声明-不合法代码'); }
} else {
    function say() { console.log('HTML5学堂'); }
}

拓展性知识

在使用函数声明创建函数时,对于非IE浏览器,会为函数定义一个非标准的name属性,可以通过name属性访问到给函数指定的名字。而采用函数表达式所定义的函数,name属性为空字符串。如下:

function h5course() {};
console.log(h5course.name);
var h5 = function(){};
console.log(h5.name);

此段代码中,前者会打印h5course,但是后者只会输出空字符串

写在最后的一些话:关于此方面知识的理解,会涉及到“预编译与执行”,想了解此方面知识的童鞋可以查看——>《JavaScript 运行机制之执行顺序详解》

HTML5学堂小编-利利。耗时:1.5h