构造函数的差异:var X = function(){},var X = function X(){}和function X(){}

Mar*_*ada 7 javascript

我现在调试其他代码,当他在这两种模式中定义构造函数时我感到很困惑.两者之间有什么特别之处吗?

//constructor 1
var MyObject = function(){

};
//constructor 2
var MyObject = function MyObject(){

};
Run Code Online (Sandbox Code Playgroud)

还有,只是像这样创建一个函数的效果.

function MyObject(){};
Run Code Online (Sandbox Code Playgroud)

我只是看每个用例.

ale*_*lex 0

两者之间的唯一区别是后者您可以通过函数名称在内部引用该函数(尽管在您的情况下,它们具有相同的名称)。在一些较旧的 IE 中,他们将此名称泄露给周围的范围。

为诸如检查调用堆栈之类的事情命名它也很有用 - 命名的函数是将要使用的名称(至少在 Chrome 的检查器中)。