函数声明式与函数表达式的区别
函数声明式与函数表达式的区别
1.什么是函数声明式
(ps:以下概念部分均来自百度,嘻嘻嘻)
-
函数声明式(Function Declaration)可以定义命名的函数变量,而无需给变量赋值,函数生命式是一种独立的结构,不能独立嵌套在非功能模块中。以function开头。
😎顺便复习一下函数创建的几种方式:
-
第一种
function 函数名 (参数…){ //something... } //==============eg================== function test (argumnet){ console.log(argument) }
-
2.什么是函数表达式
函数表达式(Function Expression)是将函数定义为表达是语句的一部分(通常是变量赋值)。通过函数表达式定义的函数是可以命名的,也可以是匿名的。不能以function开头(立即执行函数开头按()
算😄)。
//变量a引用了一个匿名函数表达式
var a = function(){
//something...
}
//=====================================================
//变量a引用了一个函数声明式
var a = function test (){
//something...
}
//===================================================
//匿名函数表达式
(function test1 () {
//something...
})();
2.1扩展部分
在上面的函数定义方法中,既有变量声明又有函数声明的方式
var f = function test(a){
if (a <= 1){
return a;
}
else {
return test(1);
}
}
console.log(f(2)); //1
console.log(f(0)); //0
test(0); //test is not defined
如上,如果这个函数声明式有函数名的话,那这个函数名就相当于一个局部变量,只能在方法内部才能使用
3.函数声明式与函数表达式的区别
函数声明式 | 函数表达式 | |
---|---|---|
函数名 | 必须 | 非必须 |
是否能在声明前调用 | 可以 | 不可以 |
能否出现在循环、条件、try/catch/finally中 | 不能 | 能 |