JavaScript 立即函数

2023-12-26

Stoyan Stefanov 在 Javascript Patterns 中说道:“你需要一个即时函数来将所有代码包装在其本地作用域中,并且不会将任何变量泄漏到全局作用域”第 70 页。

这是他的例子

(function() {
    var days = ['Sun','Mon'];
    // ...
    // ...
    alert(msg);
}());

但肯定因为 days 被定义为 var,所以它只是函数作用域?立即函数的唯一好处是立即调用该函数。没有范围优势。正确吗?


这不是关于立即执行的函数与常规函数的问题;而是关于立即执行的函数与常规函数的比较。事实上,它几乎没有任何关系。

立即调用的包装函数的唯一目的是限制包装函数本地变量的范围。

(function() {
    // This variable is only available within this function's scope
    var thisIsTemp = "a";

    // ...
}());

console.log(thisIsTemp); // undefined        

vs:

// This variable is available globally
var thisIsTemp = "a";

// ...

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

JavaScript 立即函数 的相关文章

随机推荐

  • “原子”更新整个数组

    我有一个编写器线程和一个读取器线程来更新和处理数组池 存储在地图中的引用 写入与读取的比率几乎为 5 1 写入的延迟是一个问题 编写器线程需要根据某些事件更新池中数组的几个元素 整个写入操作 所有元素 需要是原子的 我想确保如果编写器线程正
  • Unity,如何将精灵设置在背景图像前面?

    我制作了背景图像并运行动画 问题是动画层位于背景图像后面 怎么排序呢 信息 见截图 背景图像 z 0 图片上的绿色 GUITexture 爆炸 z 5 图片上的黄色 精灵渲染器 相机 z 10 我尝试过反转数字 但仍然一样 我还尝试在背景图
  • 包裹

    我有来自数据库的项目列表 ul li Jon Skeet li li Darin Dimitrov li li Marc Gravell li li BalusC li li Hans Passant li li SLaks li li V
  • 抓取:http://en.wikipedia.org 的 SSL: CERTIFICATE_VERIFY_FAILED 错误

    我正在练习 Web Scraping with Python 中的代码 但我一直遇到此证书问题 from urllib request import urlopen from bs4 import BeautifulSoup import
  • 无法在Python中使用Selenium访问下拉选择

    我是在 Python 中使用 Selenium 的新手 我正在尝试访问 Barclays Live 网站上的索引数据 登录并加载页面后 我尝试从页面的下拉列表中选择 Custom1 与列表关联的 HTML 代码中的选择对象如下所示
  • 检查软盘驱动器

    获取我使用过的可移动驱动器获取驱动器类型 功能 是否可以检查驱动器是否是软盘驱动器 请让我知道您对此的建议 感谢您的任何帮助 在内部 Microsoft Windows 为每个设备保存命名的特征标志 在 wdm h 中定义 如果该盘符对应的
  • Android VR工具包-HeadTransform getHeadView矩阵表示

    我从适用于谷歌纸板的 Android VR Toolkit 开始 我使用谷歌网站上的示例 https developers google com cardboard get started https developers google c
  • 音频标签持续时间属性返回“无穷大”

    它可能是重复的 但我有一个非常奇怪的场景 用例是在播放音频之前动态显示源集的音频持续时间 这是我到目前为止所尝试过的 var tempVid document 0 createElement audio tempVid preload me
  • CollapsingToolbarLayout:类似于 Facebook 的自定义 contentScrim

    我想为我的产品创建一个自定义 contentScrimcollapsingToolbarLayout 我的 collapsingToolbarLayout 有一个imageview里面 当它滚动时 理论上图像视图应该淡出 而我的稀松布颜色应
  • 显示加载窗口

    我在 WPF 中的应用程序加载外部资源 因此我想在程序加载时显示加载表单 我尝试创建表单 并在加载代码之前显示 并在加载结束时关闭 private void Window Loaded object sender RoutedEventAr
  • 本地Tomcat环境未启动

    我正在尝试运行本地 Tomcat 环境 但始终遇到以下错误 Can t load log handler 2localhost org apache juli FileHandler java lang ClassNotFoundExcep
  • 使用 fread() 将文本文件读入缓冲区 - 为什么缓冲区中的值不是每个字符各自的 ASCII 值?

    首先 这不是家庭作业 只是想了解为什么我会在屏幕上看到这些内容 下面的内容 我自己的工作 当前采用输入文件并将其作为二进制文件读取 我希望它将读取的每个字节存储在数组中 以供以后使用 为了简洁起见 输入文件 Hello txt 仅包含 He
  • ALV 列表中的两级列标题

    我想添加一个标题行来对列标题进行分组 Departure Arrival lt This row is what I want to add Airport Gate Date Airport Gate Date O Hare A10 10
  • 手机端口0接收短信

    我正在将 J2ME 应用程序配置为在收到 SMS 时从推送注册表获取事件 在 SMS 消息到达收件箱之前 我能否访问该消息 我读到发送到移动设备 port0 的消息会直接发送到本机收件箱 我们无法访问它 是否有任何方法可以转移甚至嗅探这些消
  • 单个应用程序窗口的任务管理器中 Visual Studio Code 的多个实例或进程

    我正在使用 Visual Studio 代码 我的机器面临性能问题 我去了任务管理器 看到有几个实例Code exe在进程选项卡中 即使有only我的电脑上正在运行 活动的 Visual Studio Code 的一个窗口 我可以看到总共有
  • 以编程方式编写 gui,还是使用高级 gui 编辑器(Java Swing)?

    我计划编写一个基于 Swing 的应用程序 使用 Netbeans 6 8 看来 Netbeans 有一个非常先进的 GUI 编辑器 我仍然对它生成的代码存有疑问 另外 我不喜欢代码部分被锁定的事实 我仍然理解这种需要 有人成功使用 Net
  • DbConnectionStringBuilder 在 PowerShell 中使用时不会解析

    我正在尝试使用以下功能DbConnectionStringBuilder用于解析类似连接字符串的用户输入 这在 C 中工作得很好 using System using System Data Common class Program sta
  • postgresql - 查询构建 json

    运行 PostgreSQL 9 6 2 我的数据以键 值对的形式存储在表中 key 实际上是一个json对象的路径 每一个都是一个属性 例如 如果键是 cogs props1 value 那么 json 对象将如下所示 cogs props
  • Python-将脚本安装到系统

    如何为我自己的脚本制作 setup py 文件 我必须使我的脚本全球化 将其添加到 usr bin 这样我就可以从控制台运行它 只需键入 scriptName 参数 操作系统 Linux EDIT 现在我的脚本可以安装了 但是如何使其全局化
  • JavaScript 立即函数

    Stoyan Stefanov 在 Javascript Patterns 中说道 你需要一个即时函数来将所有代码包装在其本地作用域中 并且不会将任何变量泄漏到全局作用域 第 70 页 这是他的例子 function var days Su