首先来比较一下如下两个例子

 

  1. function f1(name){  
  2. //函数体 
  3. var f1 = function(name){ 
  4. //函数体 
  5. };

大家会想到什么,首先前者是指函数声明,后者是指函数表达式,他们之间的区别是前者会在代码执行之前被JS解释器加载到作用于中,这样一来就可以在编程时在定义函数之前调用这个函数,此法是有效的;而后者则是在代码执行到那一行时候才会有定义,此外函数表达式是创建了一个匿名函数,然后将匿名函数赋值给一个变量。‘

接下来谈谈闭包和匿名函数的区别:

闭包是指有权访问另一个函数作用域之中的变量的函数,例如在一个函数内部创建另一个函数,代码如下

 

  1. function get(){ 
  2.   var name = "CTO"
  3.   function ret(){ 
  4.     name = "UFO"
  5.  } 
  6.  ret(); 
  7.  return name; 

匿名函数是指没有没有名字的函数。

注意:闭包可以看做是匿名函数运用的一个子集。