Javascript匿名函数调用[重复]

2024-05-04

我正在阅读 Twitter 上的 JS 源代码——在提高我的 JS 知识库的过程中,当我遇到了调用匿名函数的奇怪方式时:

!function( $ ) {
    ...
}( window.jQuery );

...这有效! :)

对于每个人来说,这是显而易见的:

function ( $ ) { ... } ( window.jQuery )

不起作用(语法错误),而这是正确的:

(function ( $ ) { .... })( window.jQuery )

谁能解释一下这个魔法(为什么是这样?!function works)?


当关键字function在语句位置(作为语句中的第一个标记)满足,则函数声明表示为函数语句。函数语句被提升到作用域的顶部,不能立即调用,并且必须有一个名称。

当关键字在表达式位置中遇到时(即,在您的示例中,不是作为语句中的第一个标记)!是第一个标记),函数声明表示为函数表达式,它可以是匿名的并返回新创建的函数的值。由于它返回新创建函数的值,因此您可以通过在其后添加括号来立即调用它。

将声明括在括号内的作用相同,但比在其前面加上前缀更常见! or +:

(function () {
    ...
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript匿名函数调用[重复] 的相关文章

随机推荐

  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • Android 上的 GStreamer

    谁能给我一些关于让 GStreamer 在 Android 上工作的提示 我以前从未使用过它 我想将它与 FFmpeg 一起使用 我已经编译了 FFmpeg 并且在 Android 上运行良好 我只是想使用 GStreamer 来帮助完成一
  • 有没有办法在指定标题的同时将数据附加到谷歌表格?

    在谷歌表格中 我有一个包含很多列的时间序列数据 date mcdonalds kfc anw tacobell 2017 08 01 432 65 543 543 2017 08 02 76 53 74 32 2017 08 03 76 2
  • 使用 CUDA 进行逐元素向量乘法

    我已经在 CUDA 中构建了一个基本内核来执行逐元素两个复向量的向量 向量乘法 内核代码插入如下 multiplyElementwise 它工作正常 但由于我注意到其他看似简单的操作 如缩放向量 在 CUBLAS 或 CULA 等库中进行了
  • Couchbase/hadoop 连接器:sqoop 作业失败“找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但需要类”

    我的配置 CouchBase服务器2 0 Sqoop 1 4 2 针对hadoop版本2 0 0编译 堆栈Hadoop CDH4 1 2 我想使用 CouchBase Hadoop 连接器 http www couchbase com de
  • 如何通过使用内置的 Date 类来节省时间?

    这个问题的目的是使用内置的 Date 类收集日期 时间计算的解决方案 而不是编写冗长的复杂函数 我会自己写一些答案 如果有人想出一些非常聪明的东西 我会接受答案 但这主要是作为解决方案的集合 因为我经常看到处理日期的代码过于复杂 请记住这是
  • 我需要在函数中进行哪些更改才能将结果存储在变量中?

    我试图将函数的结果保存到变量中并在屏幕上打印该变量 但是当我打印时我看到 无 如何修复这个问题 import time def hours localtime time localtime time time print localtime
  • C# 导出为 Excel 格式

    行动结果 var strLawTable new StringBuilder strLawTable Append thead strLawTable Append tr strLawTable Append th Dollar th st
  • Android 启动完成后自动启动应用程序

    我想制作一个在其设置中具有自动启动选项的应用程序 我在我的应用程序中进行了从 PreferenceActivity 派生的设置活动 并为自动启动选项提供了 CheckBoxPreference 如果启用自动启动选项 我的应用程序应该在手机启
  • Xml 瞬态无法工作 jaxb(Moxy)。?

    Xml 瞬态注释不适用于以下模型 XmlRootElement public class JdfValidation private String name private String dataType private String er
  • Python 3 - 如何从高维数据制作马赛克图?

    我有一个 pandas DataFrame data pd read csv r C data path demographics csv sep print data PersonID Married No of Children Sex
  • 将抽屉布局添加到主要活动中

    我创建了一个应用程序 它工作得很好 但现在我想在主活动中包含导航抽屉 我知道代码模板 但为此我需要创建新活动 我的问题是如何将抽屉布局包含到现有活动中仅包含 Recycler 视图和 fab 按钮 是否可以包含 抱歉这个大问题 您可以按照以
  • 注册方法的方法在引发事件时调用

    我有一个包含 20 个 PictureBox 控件的面板 如果用户单击任何控件 我希望调用面板中的方法 我该怎么做呢 public class MyPanel Panel public MyPanel for int i 0 i lt 20
  • Visual Studio 将 1.1 扩展为 1.1000000000000001

    至少对我来说 这是有史以来最奇怪的 Visual Studio 2010 行为 我正在开发 MVC3 项目 我从另一个项目 也包括 VS2010 MVC1 如果重要的话 复制了一行代码 如下所示 target height height 1
  • Unity InputField OnValueChanged事件显示InputField.text少一个字符

    我有一个InputField我用它作为搜索栏 我无法自动搜索OnValueChanged因为最初 文本字段将是 现在如果我输入任何字符a the inputField text还是 代替a因此 在添加下一个字符之前不会进行搜索 有没有办法在
  • 如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法

    我有一个 iPhone 网络应用程序 它最终将在 PhoneGap 应用程序中运行 但现在我在 Safari 中运行它 该应用程序需要访问 Twitter 好友的推文 包括私人推文 所以我使用 Scribe 库实现了 OAuth 我成功地将
  • 创建具有负边框半径的按钮并在 Flutter 中对齐它们

    我想建立一个这样的布局 其中两个外部元素是按钮 而内部元素是 TextField 如何在 Flutter 中创建这样的布局 我的想法是使用绝对位置来对齐每个元素的左侧 并使用标高来处理重叠 但我不确定这是最好的方法 而且我不知道如何创建按钮
  • 使用 IOS 8 编辑时键盘间歇性消失

    我遇到过几个案例 测试人员报告说 每当他们开始在我的应用程序中的某些字段中输入内容时 键盘就会消失 我使用模拟器跟踪流程 并在手机上调试时 问题从未发生 然而 当我在不受限制的手机上尝试时 它的发生相当一致 这是一些相关的代码 所有这些都是
  • NetBeans 7.4 中的 SASS

    我在 Windows 7 64 位 上使用 NetBeans 7 4 这样我就安装了 Ruby200 x64 这样我就可以使用 Sass scss 到 css CSS 预处理器在 NetBeans 中的配置如下 C Ruby200 x64
  • Javascript匿名函数调用[重复]

    这个问题在这里已经有答案了 我正在阅读 Twitter 上的 JS 源代码 在提高我的 JS 知识库的过程中 当我遇到了调用匿名函数的奇怪方式时 function window jQuery 这有效 对于每个人来说 这是显而易见的 func