add.name

 // named function expression
  var add = function add(a, b) {
     return a + b;
  };

// anonymous function
  var add = function (a, b) {
     return a + b;
  };


当省略第二个 add,它就成了无名字的函数表达式,这不会对函数定义和调 用语法造成任何影响。带名字和不带名字唯一的区别是函数对象的 name 属性 是否是一个空字符串。name属性属于语言的扩展(未在ECMA标准中定义), 但很多环境都实现了。如果不省略第二个add,那么属性add.name则 是"add", name 属性在用 Firebug 的调试过程中非常有用,还能让函数递归调用自身, 其他情况可以省略它。

 
原文地址:https://www.cnblogs.com/allenda/p/4193082.html