函数表达式最常出现的场景可能就是回调参数。

  1. setTimeout( function() {
  2. console.log("I waited 1 second!");
  3. }, 1000 );

函数表达式可以是匿名的,而函数声明不可以省略函数名。

匿名函数优缺点

优点

  1. 有独立的作用域,适合开发模块和插件

    缺点

  2. 在栈追踪中不会显示出有意义的函数名,使得调试困难。

  3. 省略了函数名,降低了可读性
  4. 在递归中如果需要引用自身只能使用已过期的arguments.callee,在事件触发后事件监听器需要解绑自身的情况下也一样。