当前位置: 首页 > 面试题库 >

JavaScript中的“(function(){})()”和“(function(){}())”在功能上是否相等?[重复]

伯洋
2023-03-14
问题内容

这个问题已经在这里有了答案

自动执行匿名JavaScript函数的括号位置? (4个答案)

5年前关闭。

均低于警戒这些代码块foo,然后bar。唯一的区别是})()}())

代码1:

(function()
{
    bar = 'bar';
    alert('foo');
})();

alert(bar);

代码2:

(function()
{
    bar = 'bar';
    alert('foo');
}());

alert(bar);

那么,除了语法之外,还有什么区别吗?


问题答案:

没有; 他们是相同的

但是,如果在new前后添加.something,它们将有所不同。

new (function() {
    this.prop = 4;
}) ().prop;

此代码创建此函数的类的新实例,然后获取prop新实例的属性。
它返回4

相当于

function MyClass() {
    this.prop = 4;
}
new MyClass().prop;

代码2

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

此代码调用newClass属性。
由于函数调用的括号位于括号的外部集之内,因此new表达式不会选择它们,而是正常调用该函数,并返回其返回值。
new表达式解析到.Class并将其实例化。(后面的括号new是可选的)

相当于

var namespace = { Class: function() { } };

function getNamespace() { return namespace; }

new ( getNamespace() ).Class;
//Or,
new namespace.Class;

如果没有对的括号getNamespace(),则将其解析为(new getNamespace()).Class—它将实例化getNamespace该类并返回Class新实例的属性。



 类似资料:
  • 问题内容: 有时我看到: 有时我看到: 两种形式之间有区别吗?是否有令人信服的理由使用一种形式而不是另一种形式? 问题答案: 这两种形式没有实际的区别,但是从_语法的_角度来看,两者之间的区别是第一个示例a中将包含分组运算符(括号),其中包括: 在第二个示例中,我们首先拥有一个整数,其中包含:

  • 问题内容: 可能重复: JavaScript中的“(function(){})()”和“(function(){}())”在功能上是否相等? 这是我还没有弄清楚的事情,但是我一直在使用function(){}()只是因为如果添加括号,我的VIM语法高亮显示就搞砸了,尽管我已经看到了(function(){})()大约很多次,也许是IE的事情? 编辑: 问题答案: 基本上,括号是一种约定,用于表示紧

  • Function 构造函数创建一个新的 Function 对象。直接调用此构造函数可用动态创建函数,但会遭遇来自 eval 的安全问题和相对较小的性能问题。—— MDN Function 可以用来创建函数,JavaScript 中的所有函数,都是 Function对象。 1. 使用 Function 创建函数 Function 在被当作构造函数调用的时候,可以用来创建函数。 var fn = ne

  • 要将您自己或其他库的函数应用于Pandas对象,您应该了解三个重要方法。 这些方法已在下面讨论。 使用的适当方法取决于您的函数是期望在整个DataFrame,行或列方式还是元素方式上运行。 表明功能应用:管道() 行或列智能函数应用程序:apply() 元素智能函数应用程序:applymap() 逐表函数应用 可以通过将函数和适当数量的参数作为管道参数传递来执行自定义操作。 因此,对整个DataF

  • Go编程语言支持匿名函数,它们可以充当函数闭包。 当我们想要内联函数而不向其传递任何名称时,使用匿名函数。 在我们的示例中,我们创建了一个函数getSequence(),它返回另一个函数。 此函数的目的是关闭上部函数的变量i以形成闭包。 例如 - package main import "fmt" func getSequence() func() int { i:=0 return

  • Function Composition是使用一个函数的输出作为另一个函数的输入的过程。 如果我们学习composition背后的数学会更好。 在数学中, composition由f{g(x)}表示,其中g()是一个函数,其输出用作另一个函数的输入,即f() 。 如果一个函数的输出类型与第二个函数的输入类型匹配,则可以使用任何两个函数实现函数组合。 我们使用点运算符(。)在Haskell中实现函数