参见英文答案 >
var functionName = function() {} vs function functionName() {}34个
我现在调试其他代码,当他在这两种模式中定义构造函数时我感到很困惑.两者之间有什么特别之处吗?
我现在调试其他代码,当他在这两种模式中定义构造函数时我感到很困惑.两者之间有什么特别之处吗?
//constructor 1 var MyObject = function(){ }; //constructor 2 var MyObject = function MyObject(){ };
function MyObject(){};
我只是看每个用例.
解决方法
不同的选择:
1)函数未命名,因此您在MyObject.toString()
中没有获得函数名称
var MyObject = function(){};
2)函数已命名,因此您在MyObject.toString()
中获得了函数名称,但无论如何都不推荐使用.
var MyObject = function MyObject (){};
实际上,(1)和(2)之间没有实际区别
3)函数声明而不是函数表达式(See discussion on topic)
function MyObject() {}
这与以前的选项不同,它在实际声明之前的范围内,因此以下代码可以正常工作:
MyObject(); function MyObject() {}
但是,如果你试试这个:
MyObject(); var MyObject = function(){};
你收到一个错误.
我通常只坚持选项1,因为它似乎是最合乎逻辑的