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

前端之家收集整理的这篇文章主要介绍了javascript – 构造函数的差异:var X = function(){},var X = function X(){},function X(){}前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > 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,因为它似乎是最合乎逻辑的

猜你在找的JavaScript相关文章