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

javascript功能领先!句法

彭展
2023-03-14
问题内容

我现在已经在一些库中看到了这种语法,我想知道这样做有什么好处。(请注意,我非常了解闭包以及代码在做什么,我只关心语法上的差异)

!function(){
  // do stuff
}();

作为更常见的替代

(function(){
  // do stuff
})();

自调用匿名功能。

我想知道几件事。首先,什么是最有效的例子?为了使该语句在语法上正确,为什么必须使用爆炸呢?有人告诉我这+行得通,而且我敢肯定还有其他地方可以代替!

第二,好处是什么?我只能说它保存了一个字符,但是我无法想象吸引如此多的采用者具有如此巨大的好处。我还有其他好处吗?

我可以看到的唯一其他区别是自调用函数的返回值,但是在这两个示例中,我们都不在乎函数的返回值,因为它仅用于创建闭包。那么有人可以告诉我为什么可能使用第一种语法吗?


问题答案:

理想情况下,您应该能够简单地完成所有这些操作:

function(){
  // do stuff
}();

这意味着声明匿名函数并执行它。但这由于JS语法的特殊性而行不通。

因此,实现此目标的最短形式是使用某些表达式,例如UnaryExpression(以及CallExpression):

!function(){
  // do stuff
}();

还是为了好玩:

-function(){
  // do stuff
}();

要么:

+function(){
  // do stuff
}();

甚至:

~function(){
  // do stuff
  return 0;
}( );


 类似资料:
  • 问题内容: 我正在寻找一个JavaScript库,该库将允许我使用类似LINQ的语法查询复杂的JSON对象。快速搜索发现了一些有希望的选择,它们看起来可能会满足我的需求: LINQ to JavaScript 和jLinq 有没有人有使用它们的经验? 有什么优点和缺点? 性能可比吗? LINQ to JavaScript的函数传递语法是否提供任何隐藏的好处(我个人发现jLinq的语法乍一看更具吸引

  • 问题内容: 我正在尝试在javascript中记录函数: 我想看看功能是什么。我可以那样做吗?谢谢。 问题答案: 如果是用户定义的函数,则可以使用: 否则,您将得到类似的信息,因为内置函数不是用JavaScript编写的。 例:

  • 卡拉夫 4.0.3 我有以下伪功能: C是独立的,A依赖于C 在这个例子中,捆绑包“BundleB1”导入了错误的“BundleC1”的主要版本,我们得到了“缺少需求”错误(如预期的那样)。但是,如果我登录到karaf控制台并运行“功能:列表”,我会看到C已启动,A已卸载,B已卸载。 我希望A被启动,因为它只依赖于C。如果我注释掉整个C功能,或者如果我之后运行,A将正常启动 如果我把这三个功能放在

  • 问题内容: 在几个JavaScript库中,我在一开始就看到了这种表示法: 虽然我对“立即执行的功能”语法完全满意 我想知道领先的分号是做什么用的。我所能想到的就是这是一种保险。也就是说,如果该库嵌入其他错误代码中,则它充当“最后一条语句最迟在此处结束”的减速方式。 它还有其他功能吗? 问题答案: 它使您可以安全地将多个JavaScript文件连接到一个文件中,以将其作为一个HTTP请求更快地提供

  • 问题内容: 我们知道在一个类中,使用时不会导入以开头的函数: 有人问什么是?我从来没有用过。 它们存在吗?这是不能使用类对象或其他对象访问的变量的概念吗? 问题答案: 这是私有变量的命名约定。参见9.6,私有变量:http : //docs.python.org/tutorial/classes.html#private- variables

  • 问题内容: 我的cardlayout的下一个功能正常运行,但以前的功能不起作用。就我而言,只有“ layout.previous( ___ );” 在我的makePanel()方法中的actionPerformed方法主体中应该可以工作,但是当我运行程序并单击prev按钮时,什么也没有发生。我究竟做错了什么?– 问题答案: 一旦向面板中添加了一些其他组件,我就不会遇到问题(与您的代码无关)。 但是