gpt4 book ai didi

javascript - 无法访问 Javascript 函数包装器内的函数?

转载 作者:行者123 更新时间:2023-12-03 08:09:43 26 4
gpt4 key购买 nike

全部,

我的代码因“use strict”问题而导致 JSLint 失败。正如这里建议的:Disable "use the function form of use strict" but keep the "Missing 'use strict' statement" warning

如果你用另一个函数包装器将 javascript 文件中的所有函数包装起来,就可以解决这个问题。

但是现在,执行此操作后,当我从页面调用它们时,所有函数都未定义?

(function () {
"use strict";

/**
* Update the page with a message informing the user
* an email has been sent to their email address
* @param details user details (email address)
*/
function shareEmailSent(details) {

// unhide confirmation message
$('strong#emailAddress').text(details.email);
$('#confirmationMessage').removeClass('hide');
}

/**
* Handle error
*/
function showError() {
return false;
}

/**
* Makes a POST request to send the current user
* an email containing their unqiue share url
* @param emailList
*/
function sendEmail(emailList) {
var data = {};
data.formToken = $('#formToken').val();
data.emails = emailList;
$.mooAjax({
url: "/ajax/share/refer_a_friend_email.php",
type: "POST",
data: data,
dataType: "json",
error: showError,
success: function (response) {
shareEmailSent(response);
}
});
}
}());

例如

shareEmailSent is not defined

如何解决此问题并同时解决 JSLint 问题?

谢谢

最佳答案

您可以采取多种方法。按好感程度降序排列:

  1. 不要从外部调用函数。使用 JavaScript 绑定(bind)所有事件处理程序(例如使用 addEventListener)
  2. 使用the revealing module pattern
  3. 显式将函数设置为全局函数(例如使用 window.someFunction = someFunction)。

显然,由于 sendEmail 本身调用其他函数,因此如果您使用第二种或第三种方法,它可能是唯一需要公开的函数。

关于javascript - 无法访问 Javascript 函数包装器内的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199601/

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