JS之函数声明与表达式

首先,解释下:

  1)函数声明:直接声明一个函数 function fnname(){};

           function声明必须有方法名,而表达式里面的方法名可以忽略

  2)函数表达式:通过赋值,将一个变量引用指向一个指定的function式匿名函数。如:var fnname = function(){}, 可以是匿名函数也可以是具体函数;

           另外一种函数表达式,用于创建一个新的作用域,可以用于闭包,大多以匿名函数方式创建,且自动执行。如:(   function() {}  ) ()

同时,js的解析器对函数声明与函数表达式并不是一视同仁地对待的。

  对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析;

  而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析,所以在实际中,当使用函数声明的形式来定义函数时,可将调用语句写在函数声明

之前,而后者,这样做的话会报错。
      

原文地址:https://www.cnblogs.com/boyangx/p/4508645.html