0

我有以下课程:

var myclass = (function(){
   var b={};

   b.method1 = function(){
       console.log("method1");
   };

   b.method2 = function class2(){
       console.log("method2");
   };

   return b;
}());

method1除了分配给method1的匿名函数和method2命名函数之外,这些方法之间是否有任何区别?

我通常使用 method1 方式,但只是发现 method2 用于方法声明。

使用其中一个有什么优势吗?

4

3 回答 3

1

对于命名函数表达式(method2),您可以通过其名称在其内部调用该函数。

b.method2 = function class2(){
   console.log("method2");
   if (somecondition){
       var something = new class2();
   }
};
于 2013-08-21T21:29:03.330 回答
0

JavaScipt 中的函数名基本上是一个变量,因此您可以重用它。这意味着您可以class2在自执行函数中使用而无需调用b.method2. 由于您的自执行函数返回您的b对象,因此您不能class2在外部使用。

于 2013-08-21T21:35:19.810 回答
0

功能上几乎是一样的。在某些浏览器上,如果您调用,您会看到不同之处,console.log( b.method1, b.method2 )因为第二个浏览器有名称。这里有很多关于这个主题的文章。这是其中之一:JavaScript 中的函数表达式与声明有什么区别?

于 2013-08-21T21:31:24.123 回答