gpt4 book ai didi

javascript - 从另一个 Javascript 文件调用 IIFE

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:35 24 4
gpt4 key购买 nike

我有一个 bg.js 文件,它的内容只是一个 IIFE。我想加载这个文件/从另一个文件中的另一个函数调用函数。由于 IIFE 是匿名的(是的,对吗?)我不能用名字来调用它。看来我必须加载整个文件才能立即执行。

我已经完成搜索并找到了许多关于什么是 IIFE 的教程和文档,但我没有看到如何从另一个范围执行它们。

如何从另一个 javascript 文件调用/加载属于 IIFE 的 javascript 文件?

更多信息IIFE 加载在我页面的页脚中。当我单击链接进行导航时,不会执行页眉和页脚脚本。页脚中的 IIFE 负责设置背景图像,因此我需要在我的 perPageBindings()

中执行该函数

我认为我需要做的是从主体中的另一个函数调用 IIFE,该函数正在 perPageBindings()

中执行

为清晰起见进行编辑我正在考虑两种选择:

  1. 只需将脚本标签从页​​脚移动到正文;或
  2. 给 IIFE 一个名字,这样它就不再是匿名的,然后从别处调用那个命名的函数

如果 2 是一个可行的选项,那么我想我会创建一个关于将 IIFE 转换为命名函数的新问题。

最佳答案

如果您想访问该脚本中的某些内容、函数或属性,在它被匿名调用后,您需要将该函数的一些内部结构暴露给可从全局范围访问的内容。

我并不是说你必须让你的函数将一个变量放入全局范围,尽管这是许多库所做的,并且是 UMD 遵循的路径之一,如果一个 CommonJS AMD 环境不可用。

你应该查看 Revealing Module Pattern以获得更好的视角。

考虑以下代码片段:

(function(global){
/*
* This variable will stay "private"
* because it is scoped to the IIF
*/
var someProp = "Hello World";

/*
* This property is effectively exposed
* because it is accessible through
* myLib.foxtrot below
*/
var someOtherProp = "Hello to you too";

var myLib = {
foo: "bar",
fiz: true,
buzz: 1,
foxtrot: someOtherProp
};

/*
* myLib is now accessible through the
* global that we passed to the IIF below
* at the point of calling with "window"
*/
global.myLib = myLib;

}(window));

关于javascript - 从另一个 Javascript 文件调用 IIFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com