函数声明式与函数表达式的区别

函数声明式与函数表达式的区别

1.什么是函数声明式

(ps:以下概念部分均来自百度,嘻嘻嘻)

  1. 函数声明式(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中 不能

有什么错误欢迎补充,后面我也会查缺补漏,谢谢~~

原文地址:https://www.cnblogs.com/hongzhiguo/p/13820613.html