gpt4 book ai didi

javascript - 从另一个脚本调用嵌套函数

转载 作者:行者123 更新时间:2023-11-30 17:27:02 25 4
gpt4 key购买 nike

在上下文中,我有两个 javascript 文件,一个处理实际页面本身,另一个处理弹出式教程。每个脚本文件都嵌套在一个函数中,如下所示:

(function () {
'use strict';
// script here
}());

在主脚本中有如下函数:

function updateCompView(ident) {
'use script';
// code is here
}

然而,我发现如果我在第二个脚本文件(用于教程)中引用此函数,如下所示:

updateCompView('KL-COM-001');

我收到 Uncaught ReferenceError 。我已经通过删除顶级函数设法解决了这个问题,但这意味着我会收到大量“使用严格”的 JSLint 错误。

有没有办法引用嵌套在外部函数中的函数?

最佳答案

你必须让它成为可引用的

有三种方法可以做到这一点,所以让我们开始假设您有以下代码

(function () { // this is an IIFE
"use strict";
function baz() {}
}()); // this is where it gets invoked

方法 1,在 IIFE 的开头创建自己的命名空间(只是一个 Object),

if (!window.myNamespace)
window.myNamespace = {};

然后在定义了baz之后,

window.myNamespace.baz = baz;

现在你可以在其他闭包下通过window.myNamespace.baz访问baz


方法 2IIFE return,在 IIFE 结束时 p>

return baz; // or some object containing baz

然后你重构你的 IIFE 看起来像这样

var foo = (function () {
// IIFE body
}());

现在你可以通过 foofoovard 的闭包和后代闭包中访问 baz


方法三,在全局命名空间中设置baz

对此有两种选择,一种是将其构造为函数表达式并且不要 var 您分配给的变量,即

baz = function () {};

另一种方式类似于方法 1,但没有命名空间。这可以被认为是不好的,因为每次你这样做都会用新的东西污染全局命名空间。 baz定义后,

window.baz = baz;

现在您可以通过 window.baz 访问 baz 或简单地访问 baz 如果它没有被其他闭包隐藏

关于javascript - 从另一个脚本调用嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035079/

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