- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这两个 JavaScript 函数调用有什么区别?
(function(){alert("foo")})()
与此相比:
(function(){alert("foo")}())
最佳答案
这样做是为了提高可读性。
您给出的两个示例之间没有真正的功能差异,但它们都非常接近简单的函数声明,这是不同的。添加括号是为了提高可读性,以便区分它们。
以下是每个片段的作用:
在两个片段的第一个片段中,第一个括号将被计算为所包含函数的值。然后这个值将被作为函数调用。所以最终该函数将被执行,这可能是您关心的。
在第二个代码片段中,外括号将被评估为包含声明为内联并立即执行的函数。同样,该函数将被执行,这可能仍然是您关心的。
两者都会执行相同的功能,因此不会有任何显着差异。
像您这样的代码片段和简单函数声明之间的区别:
您给出的功能也与以下相同。我刚刚添加了一个函数名称并分配了返回值以保证语法准确性,您现在可以忽略它。
// javascript...
var val =
function myFooFunc () {
alert("foo");
}();
但是,这很容易被误认为是简单的函数声明,这是不同的:
// javascript...
function myFooFunc () {
alert("foo");
}
请注意,这里唯一真正的区别是最后一个函数声明不会立即执行。其他人都是。因此,这是一种非常不同的行为(如果按名称调用,则简单声明可能会稍后执行,或者可能根本不会执行)。然而,通常很难立即看出语法上的差异,特别是当函数体变得非常长并且需要在屏幕上滚动时。
为什么函数会立即执行?
当一个函数在声明后立即执行时,该值通常会被返回到某个东西(它可能是赋值语句的一部分)。有时该函数会立即执行,因为它包含内部函数并用于为封闭的语句提供功能范围。
本质上,人们用括号括住“立即执行”的形式(您的两个片段,以及我的两个片段中的第一个),以便向其他开发人员提供该函数正在立即调用的视觉提示。它只是更容易阅读,因为您可能直到到达函数末尾(或根本注意到它们)才能捕获括号。
关于javascript - 为什么 JavaScript 函数调用要用括号括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245298/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!