构造函数的区别:var X = function (){}, var X = function X(){}和functi
Difference in constructors: var X = function (){}, var X = function X(){}, and function X(){}
我现在正在调试别人的代码,当他在这两种模式下定义构造函数时,我只是感到困惑。这两者之间有什么特别的吗?
//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)函数声明而不是函数表达式(参见主题讨论)
function MyObject() {}
这与前面的选项不同,因为它在实际声明之前就在作用域中,所以下面的代码可以正常工作:
MyObject();
function MyObject() {}
但是,如果你尝试这样做:
MyObject();
var MyObject = function(){};
你得到一个错误。
我通常只坚持选项1,因为它似乎是最合乎逻辑的
两者之间的唯一区别是后者可以通过函数名在内部引用函数(尽管在您的情况下,它们具有相同的名称)。在一些较老的ie中,它们将此名称泄露给周围的作用域。
这也是有用的东西,有它的命名,如检查调用堆栈-命名函数的名称将被使用(至少在Chrome的检查器)。
相关文章:
- 防止自定义文本出现在页面上的所有高图表上,←使用 {events:{load:function(){var.
- $scope.$watch(var,function) undefined 不是函数
- 这在javascript中是什么意思:var obj = (function(){ .. })().
- 是 $.ajax() jQuery 缩短普通代码的方式: function loadXMLDoc() { var xml
- var varName = function funcName() {}
- var functionName = function() 不是一个函数
- Array.prototype.each = function(callback) { for (var i = 0;
- Javascript: var = var = function
- Will var result = function() { //doSomething };if (result !=
- var foo=function(){..}()和var foo=(function(){..}())之间的区别
- javascript中函数myName()和var myName=function()之间的区别
- Javascript var a = function b() {}
- 变量声明的语法?var a=(function(){})()
- Javascript: var myFunc = function() vs. var myFunc = functio
- Var foo = (function(){..})();.. Foo()不起作用
- var myFunction = function functionName()
- 构造函数的区别:var X = function (){}, var X = function X(){}和functi
- 正在使用var foo = function foo() {};在IE中创建内存泄漏的表达式<9.
- Javascript functions like "var foo = function bar() ...
- var myFunction = function() {}; vs function myFunction() {};