问题标签 [iife]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - javascript中自执行函数的目的是什么?
在 javascript 中,你什么时候想使用这个:
对此:
javascript - 立即函数调用语法
有一个JSLint选项,实际上是 The Good Parts 之一,它“[需要] parens around immediate invocations”,这意味着构造
而是需要写成
我的问题是——谁能解释为什么第二种形式可能被认为更好?是不是更有韧性?更不容易出错?它比第一种形式有什么优势?
自从提出这个问题后,我开始理解在函数值和函数值之间进行清晰视觉区分的重要性。考虑立即调用的结果是赋值表达式右侧的情况:
虽然最外面的括号在语法上是不必要的,但左括号给出了一个预先指示,即被分配的值不是函数本身,而是被调用函数的结果。
这类似于 Crockford 关于构造函数大写的建议——它旨在为任何查看源代码的人提供视觉提示。
javascript - 为什么需要在同一行调用匿名函数?
我正在阅读一些关于闭包的帖子,并且到处都看到了这个,但是没有明确的解释它是如何工作的 - 每次我被告知要使用它......:
好的,我看到我们将创建新的匿名函数,然后执行它。所以在那之后这个简单的代码应该可以工作(并且确实如此):
我的问题是这里发生了什么样的魔法?我在写的时候是这么想的:
然后将创建一个新的未命名函数,如函数 ""(msg) ...
但是为什么这不起作用呢?
为什么它需要在同一行?
你能指点我一些帖子或给我一个解释吗?
javascript - 将整个 Javascript 文件包装在像“(function(){ ... })()”这样的匿名函数中的目的是什么?
我最近读了很多 Javascript,我注意到整个文件在要导入的 .js 文件中如下所示。
这样做的原因是什么而不是一组简单的构造函数?
javascript - 自动执行匿名 JavaScript 函数的括号位置?
我最近将json2.js的当前版本与我项目中的版本进行比较,并注意到函数表达式的创建和自我执行方式有所不同。
用于将匿名函数包装在括号中然后执行它的代码,
但现在它将自动执行的函数包装在括号中。
CMS 在解释 JavaScript 的封装匿名函数语法的接受答案中有一条评论,即“两者:(function(){})();
并且(function(){}());
都是有效的”。</p>
我想知道有什么区别?前者是否通过离开全局匿名函数来占用内存?括号应该放在哪里?
javascript - What is this practice called in JavaScript?
When you wrap your JavaScript code in a function like this:
I noticed that this fixes scoping problems for me on a lot of web pages. What is this practice called?
javascript - 这个未知的 JavaScript 语法是什么?
这是 jQuery 代码吗
相当于
如果是,两者有什么区别?如果不是,第一个做什么?
编辑:
谢谢大家。大多数反应与不同的口味和样品相似
javascript - JavaScript 自调用函数
我从 Stoyan Stefanov 的一本名为 Object Oriented JavaScript 的书的第 79 页得到了这个例子。真的不知道该做什么,我第一次运行这个程序(按回车键)它返回“未定义”。之后,按照作者的指示,我调用它a();
并收到警报“Worky worky”
我的问题是
a) 我是否正确地完成了第一步?即我应该通过点击“进入/返回”来运行一个自调用程序吗?
b)如果我只是点击“进入/返回”来运行程序是正确的,为什么它会给出“未定义”的结果。作者说,这个程序拒绝引用(在第一次运行时)对函数 actualWork() 的引用?如果它返回一个引用,为什么它被认为是未定义的?它在某种程度上很重要吗?
请注意,我尝试在 jsfiddle.net 中输入代码,然后点击运行并没有发生任何事情,但是当我第一次在控制台中运行它时我得到“未定义”,然后当我执行 a(); 时出现警报。
javascript - JavaScript 中变量阴影的正确术语是什么?
下面我们有一个IIFE,它(像任何函数一样)创建一个本地范围。在该范围内有一个parseInt
功能。现在,由于浏览器中已经有一个具有该名称的全局函数,本地函数将掩盖全局parseInt
函数 - 在 IIFE 内部,任何调用都parseInt
将调用本地函数,而不是全局函数。(全局函数仍然可以用 引用window.parseInt
。)
这有法律上的(ECMAScript 规范)或事实上的(通用)名称吗?遮遮掩掩?超载?
javascript - Javascript自执行函数“不是函数”
我有:
当页面加载时,我的 js 会正确执行。我也有:
但是萤火虫说 Init 不是一个函数。