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

(function(){…}())之间是否有区别?和(function(){…})();?

哈翔
2023-03-14
问题内容

有时我看到:

(function() { ... }());

有时我看到:

(function() { ... })();

两种形式之间有区别吗?是否有令人信服的理由使用一种形式而不是另一种形式?


问题答案:

这两种形式没有实际的区别,但是从_语法的_角度来看,两者之间的区别是第一个示例a中将包含分组运算符(括号)CallExpression,其中包括FunctionExpression

           CallExpression
            |         |
   FunctionExpression |
            |         |
            V         V
(function() {       }());
^                      ^
|--PrimaryExpression --|

在第二个示例中,我们首先拥有一个整数CallExpression,其中包含FunctionExpression

      PrimaryExpression
            |
     FunctionExpression
            |
            V
(function() {       })();
^                      ^
|--  CallExpression  --|


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

  • 问题内容: 我的Google-fu使我失败了。 在Python中,以下两个相等测试是否等效? 这是否适用于您要比较实例(list说)的对象? 好的,这样可以回答我的问题: 因此,==测试重视在哪里is进行测试以查看它们是否是同一对象? 问题答案: 如果两个变量指向同一个对象(如果变量引用的对象相等),则将返回。 在您的情况下,第二个测试仅能工作,因为Python会缓存小的整数对象,这是实现细节。对

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 这两个(有效)通用范围是: 相同? 假设我有一个界面 和一些实现它的枚举: 我想要求实现不仅要使用a,而且还必须是枚举。“标准”方式是通过交叉点绑定: 但是我发现这也可行: 通过以上操作,可以编译出: 对于这两种情况,绑定均按上述要求和预期的方式工作。 这两个界限之间是否有区别(如果有),并且一个“优于”另一个? 问题答案: 在这种特定情况下,没有区别,因为Enums形式类型参数实际上

  • 问题内容: Swift提供了关键字(和)检查对象是否可以成功向下转换: 而且还提供了原文: 对于符合的类,这真的有很大不同吗? 问题答案: 是的, 这是有区别的:在Swift中可以与任何类一起使用,而只能与属于或实现的那些类一起使用。

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子: