我一直在寻找关于自我调用函数的信息,在某个地方我偶然发现了这个符号:
+function(){}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下+这个功能前面的符号意味着什么?
我曾经知道这意味着什么,但我现在正在努力...
这基本上是说document.onload吗?
(function () {
})();
Run Code Online (Sandbox Code Playgroud) 我最近一直在阅读很多Javascript,并且我注意到要导入的.js文件中的整个文件包含如下所示.
(function() {
...
code
...
})();
Run Code Online (Sandbox Code Playgroud)
这样做的原因是什么,而不是一组简单的构造函数?
我现在已经在一些库上看到了这种语法,我想知道它的好处是什么.(注意我很清楚闭包和代码在做什么,我只关心语法差异)
!function(){
// do stuff
}();
Run Code Online (Sandbox Code Playgroud)
作为更常见的替代品
(function(){
// do stuff
})();
Run Code Online (Sandbox Code Playgroud)
用于自我调用匿名函数.
我想知道一些事情.首先,允许顶级示例实际工作的是什么?为了使这个陈述在语法上正确,为什么必要的爆炸?我也被告知+有效,我相信其他一些代替!
第二,有什么好处?我所能说的只是它节省了一个角色,但我无法想象吸引众多采用者会带来如此巨大的好处.我还缺少其他一些好处吗?
我可以看到的唯一其他差异是自调用函数的返回值,但在这两个示例中,我们并不真正关心函数的返回值,因为它仅用于创建闭包.那么有人可以告诉我为什么人们可能会使用第一种语法吗?
这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
可能重复:
感叹号在功能之前做了什么?
我长期以来使用以下JavaScript在JavaScript中执行自动执行的匿名函数:
(function () { /* magic happens */ })()
Run Code Online (Sandbox Code Playgroud)
最近,我开始看到以下模式的更多实例(例如,在Bootstrap中):
!function () { /* presumably the same magic happens */ }()
Run Code Online (Sandbox Code Playgroud)
任何人都知道第二种模式的优势是什么?或者,这只是一种风格偏好吗?
我正在使用twitter bootstrap创建一个站点,并试图初始化工具提示.除了添加如下内容:
$("[rel=tooltip]").tooltip() 在application.js中,除非我保留,在bootstrap文档中使用以下代码,我的工具提示不会初始化.
!function ($) {
$(function(){
})
}(window.jQuery)
上面的代码是做什么的?
在JavaScript中声明本地(内部)函数时,有两个选项:
使用var关键字声明,分配给变量:
(function() {
var innerFunction1 = function() { ... };
innerFunction1();
}());
Run Code Online (Sandbox Code Playgroud)
仅使用function关键字声明,而不指定给变量:
(function() {
function innerFunction2() { ... };
innerFunction2();
}());
Run Code Online (Sandbox Code Playgroud)
我可以看到第二个的一个优点:函数可以在调用它的代码下面声明,因此更容易将私有函数与实际执行的代码分开.
哪个更好,为什么?
当我遇到调用匿名函数的奇怪方式时,我正在阅读Twitter上的JS源代码 - 在改进我的JS知识库的过程中:
!function( $ ) {
...
}( window.jQuery );
Run Code Online (Sandbox Code Playgroud)
......这有效!:)
对每个人来说,显而易见的是:
function ( $ ) { ... } ( window.jQuery )
Run Code Online (Sandbox Code Playgroud)
不起作用(语法错误),而这一个是正确的:
(function ( $ ) { .... })( window.jQuery )
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这个魔术(为什么案例与!function作品)?
可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
在JavaScript中声明函数
我已经看到了两种不同的语法来定义javascript中的函数:
function f() {
...
}
Run Code Online (Sandbox Code Playgroud)
以及
var f = function() {
...
};
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?其中一个被弃用了吗?
javascript ×9
iife ×4
function ×3
syntax ×2
closures ×1
coding-style ×1
declaration ×1
iif ×1
jquery ×1
operators ×1
scope ×1