gpt4 book ai didi

javascript - JavaScript 中嵌套函数的需求和用途是什么

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:45 25 4
gpt4 key购买 nike

我明白什么是嵌套函数,但我不明白为什么我们一开始就需要嵌套函数。有没有一个问题只能通过在 JavaScript 中使用嵌套函数来解决。我看到的所有创建嵌套函数的示例都可以在不在函数内部创建函数的情况下进行编码,并且结果相同。那么哪些问题需要创建嵌套函数,并且只能/高效地通过使用嵌套函数来解决。

最佳答案

嵌套函数的核心重要性是范围生成。我们需要 JavaScript 中的嵌套函数和作用域来实现以下目标。

  1. Non-Polluted Global Namespace
  2. Modularization功能
  3. 封装 modules 的私有(private)内部工作
  4. 防止不同脚本之间的标识符冲突
  5. 由于嵌套范围内的变量符合 minification 的事实,因此脚本大小更小.
  6. 它加快了 Identifier Resolution Process

这是一个示例模块,展示了函数嵌套和作用域提供的封装能力:

var notificationService = (function ($, toastr, undefined) {
var _externals = {},
_jqExtend = $.extend;

/*
* Private Methods
*/
function _showMessage(params) {
params = params || {};
toastr.remove();

if (typeof (params.title) === "undefined")
toastr[params.method](params.msg);
else
toastr[params.method](params.msg, params.title);
}

/*
* Public Members
*/
_externals.clear = function () {
toastr.remove();
};

_externals.showError = function (params) {
params = params || {};

_jqExtend(params, {
method: "error"
});

_showMessage(params);
};

_externals.showInfo = function (params) {
params = params || {};

_jqExtend(params, {
method: "info"
});

_showMessage(params);
};

_externals.showSuccess = function (params) {
params = params || {};

_jqExtend(params, {
method: "success"
});

_showMessage(params);
};

_externals.showWarning = function (params) {
params = params || {};

_jqExtend(params, {
method: "warning"
});

_showMessage(params);
};

return _externals;
})(jQuery, toastr);

上面的代码使我们能够控制公开哪些内容。在这种特定情况下,所有附加到 _externals 对象的成员都通过引用 notificationService 对象暴露给全局命名空间。如果不使用范围,内部成员(_jqExtend 和 _showMessage)也将附加到窗口对象并增加浏览器解析标识符引用所需的工作量。

关于javascript - JavaScript 中嵌套函数的需求和用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482643/

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