Javascript “后面的括号;新<;功能>&引用;可选的?
我在Chrome控制台中运行了以下两个代码段,结果相同:Javascript “后面的括号;新<;功能>&引用;可选的?,javascript,initialization,new-operator,Javascript,Initialization,New Operator,我在Chrome控制台中运行了以下两个代码段,结果相同: test = new function(){ var a = 1; var b = 2; var c = 3; this.debugBase = function(){console.log('' + a + b + c)}; }; test debugBase: function (){console.log('' + a + b + c)} __proto__: Object 与: test2 = new (func
test = new function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
};
test
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
与:
test2 = new (function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
})();
test2
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
我错过什么了吗?函数后面的括号有什么意义吗?如果没有,为什么人们要把它们放在那里?把这些偏执狂放在那里实际上是在运行这个功能。没有它们,函数只是定义的 编辑:我没有注意到您使用的“新建”关键字。在这两种情况下都会调用您的函数。不过,这里通常不需要新的关键字。在您给出的示例中,它们基本相同,末尾的括号是多余的 请看这个jsfiddle了解我的意思()
如果您运行它,您将看到只调用第二项。因为您可以像这样传递参数,例如
var x = new String(5); // '5'
除此之外,这是一个偏好的问题。这里也提出了类似的问题:。Daniel Vassallo完整且公认的答案: 引述1: 作为特例,仅对于
new
操作符,JavaScript通过允许在函数调用中没有参数时省略括号简化了语法。以下是使用新的运算符的一些示例:
o = new Object; // Optional parenthesis omitted here
d = new Date();
就我个人而言,我总是使用括号,即使构造函数没有参数
此外,如果省略括号,可能会伤害您的感情。它报告调用构造函数的缺少“()”,
,并且该工具似乎没有允许省略括号的选项
1大卫·弗拉纳根:(第75页)
但是从控制台的输出来看,不管怎样,对象都是实例化的。