javascript - 为模块化返回空函数有什么用?

标签 javascript function object constructor modularity

越来越多的 javascript 有这种返回空函数的模块化方法。您可以在 node.js 的源代码中找到它。它在 require.js 的文档中。它有什么作用?

define(['jquery'] , function ($) {
    return function() {};
});

如果我要返回一个对象,我只会执行 return {};,尽管我认为返回一个空对象没有用。可能想把 vars 放进去。所以这显然有一些有值(value)的东西。我猜它与访问返回函数范围内的函数有关。

这又是那个构造,在 AMD Is Not The Answer 中文章:

define(['dep1', 'dep2'], function (dep1, dep2) {
    //Define the module value by returning a value.
    return function () {};
});

但是上面的实际好处是什么,而不是仅仅返回你想要返回的语义上有意义的东西,例如在一个对象中?

您如何以这种方式访问​​功能外部范围内的事物?

function(baz) {
    var foo = true,
        bar = false;

    if (baz) bar = true;

    return function() {}; // wut?
};

虽然我在技术上并不完全“受到挑战”,但我希望有人能用外行的术语解释这一点,因为 articles about modularity不要让我开心。

最佳答案

您的代码有误。它应该是这样的自执行函数:

(function(baz) {
    var foo = true,
        bar = false;

    if (baz) bar = true;

    return function() {}; // wut?
});

所以你只是忘记了它前面的 ( 。 现在你可能会把它当作一个表达式来使用,所以它会变成这样

var singleton = (function(baz) {
    var foo = true,
        bar = false;

    if (baz) bar = true;

    return function() {}; // wut?
});

现在您的单例变量将是一个简单的空函数。

如果你输入

return function() {
  return foo; 
}

它变得有用了: singleton() <- 返回 true

并且与您刚刚编写的模块模式非常相似:

return {
  myFoo: foo
}

因此您可以使用 singleton.myFoo 访问它;

这对于实现公共(public)/私有(private)变量很有用,因此您只需返回要公开的函数/变量即可。

关于javascript - 为模块化返回空函数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146998/

相关文章:

javascript - 如何删除参数对象中的第一个参数?

javascript - 将参数传递给 ajax 调用以仅读取 json 文件的特定字段

javascript - 使用字符串访问包含属性的数组

javascript - 如何在 Javascript 中使用 Babel 脚本的对象?

c - 在 void* 函数中返回 float

function - 这两种方法定义之间的区别

javascript - Mongoose 填充API请求和 postman ,返回空数组?

python - 如何定义一个检查DNA子串的函数?

javascript - 将数组拆分为多个数组或备用数组 - Javascript

javascript - 使用 jquery 遍历对象数组