JavaScript - 声明嵌套函数的全局作用域?

2024-05-17

我尝试为嵌套 JavaScript 函数提供全局范围的尝试不起作用:

//DECLARE FUNCTION B IN GLOBAL SCOPE
function B;

function A() {

    //DEFINE FUNCTION B INSIDE NEST
    B() {
        alert("function B is running");
    }
}

//CALL FUNCTION B FROM GLOBAL SCOPE
B();

这只是好奇心——你是对的,我确实没有任何充分的理由想要这样做。

TIA - 我没有 SO 帐户来回复您的答案......


function B;只会产生语法错误。

您可以使用函数表达式 https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope#The_function_expression_(function_operator)。由于函数是第一类对象,因此您可以将函数分配给变量:

var B; // declare (global) variable (outer scope)

function A() {
    // assign a function to it
    B = function() {
        alert("function B is running");
    };
}

// we have to call A otherwise it won't work anyway
A();
// call B
B();

你也可以让A返回一个函数:

function A() {
    return function() {
        alert("function B is running");
    };
}

B = A();

这将使之间的关系A and B更清楚一点。

当然,您始终可以通过省略来定义全局变量var,但您应该非常小心地使用它。尽可能少地使用全局变量。

function A() {
    B = function() {
        alert("function B is running");
    };
}

我敢打赌有更好的方法来做到这一点,具体取决于您的实际目标是什么。


有关函数和函数范围的更多信息。 https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

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

JavaScript - 声明嵌套函数的全局作用域? 的相关文章

随机推荐

  • 我可以访问其他 Google App Engine 应用程序的数据存储区实体吗

    众所周知 在Google App引擎中 对于每个注册的电子邮件帐户 我们可以进行10个申请 现在 我需要在应用程序之间共享实体 这可能吗 如果有 是如何实施的 不 这是不可能的 然而 作为尼克 约翰逊 https stackoverflow
  • 具有 yaxis max 属性的 Highcharts 不会隐藏绘图带和标签

    我创建了两个 jsfiddle 来演示我的问题 第一个 jsfiddle 是我需要的 第二个 jsfiddle 是我遇到的问题 这个jsfiddle https jsfiddle net n5ua6krj 1 https jsfiddle
  • 防止多个实例 - 但还要处理命令行参数?

    我正在从我的应用程序处理与 Windows 相关的扩展文件 因此 当您在 Windows 中双击文件时 它将执行我的程序 然后我从那里处理该文件 如下所示 procedure TMainForm FormCreate Sender TObj
  • 使 iOS 应用程序与 iPhone 6 和 iPhone 6 尺寸兼容 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我创建了一个应用程序 其中使用 xib 进行布局 目前我使用两种不同的 xib 一种用于iPhone4 320 480 一种用于iPh
  • 矩阵和 Tablix 之间有什么区别?

    在报告服务中 当我拖入矩阵时 我是否有效地拖入了 tablix Tablix 是表格 列表和矩阵的混合体 我理解 至少我认为我理解 表格和 Tablix 之间的区别 但不理解矩阵和 Tablix 之间的区别 正如 Gabriel 所说 在
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • 禁用/修复 .Designer.cs 文件中的代码分析警告

    我在用DataVisualization Charting Chart广泛地 并且在很大程度上它正在发挥作用 但是 我经常运行代码分析 并处理了我自己的所有警告 但是 使用图表的 Designer cs 文件中有大约 30 个 CA2000
  • 为什么 CastleWindsor 的 BeginScope 超出范围?

    我正在尝试将温莎城堡添加到我的 Web API 项目中 并且正在关注这个帖子 http blog kerbyyoung com 2013 01 setting up castle windsor for aspnet html commen
  • 如何在片段中的一个选项卡与另一个选项卡之间切换时动态刷新选项卡内容?

    我有一个名为 CourseActivity java 的活动 因为我有 2 个名为 UserCourses 和 FavouriteCourses 的选项卡 我在第一个选项卡中有一些课程列表 它有图标 在选择图标时 相应的粗略内容将添加到 F
  • Firebase 部署无法找到 firebase.json

    所以 我是编程新手 仍在学习一些东西 顺便说一句 我使用 Windows 我尝试制作一个应用程序 将其连接到 firebase 设置完所有内容后 就可以设置 CLI 好消息 我成功设置了从节点到 nvm 的所有内容 直到在 CLI 中成功启
  • 获取自定义属性的值

    我有两个单选按钮 我希望能够获取选中的单选按钮的自定义属性 xml value 的值 我尝试过以下脚本 var userType input name ctrl CustomerType checked this attr xmlvalue
  • SwiftUI:动态“列表”中的“切换”在重用时会破坏其布局?

    我试图展现一种动态List行包含Toggle元素 这Toggle最初布局正确 但是当它们滚动进和滚出视图时 即单元格重用时 它们的布局会中断 最小示例代码 import SwiftUI struct SwitchList View var
  • 当对phonegap应用程序进行更改时,Eclipse不更新apk

    已经有人问过这个问题 但没有一个答案有效 例如清理 刷新 更改版本号等 当对源文件进行更改时 Eclipse 不会重建 android 项目 这是一个phonegap应用程序 如果我更改html文件甚至java代码 我仍然得到相同的apk
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • Box 与 X 上的移动语义

    我有一个简单的问题Box
  • 将ADODB二进制流转换为字符串vba

    我有以下问题 我有一个存储在服务器上的 CSV 文件 但它有 3 个字符作为分隔符 我想从 URL 加载数据并使用 作为分隔符将数据填充到 Excel 页面的列中 到目前为止 我找到了使用 ADODB 记录集从网站加载文件的代码 但我无法进
  • 如何计算选择查询的最佳获取大小

    在 JDBC 中 默认获取大小为 10 但我想当我有一百万行时 这不是最佳获取大小 据我所知 获取大小太低会降低性能 但如果获取大小太高也会降低性能 我怎样才能找到最佳尺寸 这对数据库端有影响吗 它会占用大量内存吗 如果您的行很大 请记住
  • 如何返回包含最大值标签的向量

    我有一个 4 列数组 我想获得一个向量 其中每行包含包含该行最大值的列的标签 我可以在循环中执行此操作 但我想使用矩阵函数来提高速度 我怎样才能在不编写自己的库函数的情况下做到这一点 有一个函数可以做到这一点 如果x是你的矩阵 尝试max
  • Pandoc Markdown 分页符

    最近我开始使用 Pandoc markdown 它似乎是 LaTeX 的一个很好的替代品 因为我的文档没有很多数学公式 而且我没有任何使用 LaTeX 的经验 再加上不到 2 周的提交截止日期 这使它成为一个很好的解决方案 我无法解决的一件
  • JavaScript - 声明嵌套函数的全局作用域?

    我尝试为嵌套 JavaScript 函数提供全局范围的尝试不起作用 DECLARE FUNCTION B IN GLOBAL SCOPE function B function A DEFINE FUNCTION B INSIDE NEST