我正在尝试重新利用我在 SO 的答案中找到的一些 Javascript 代码。但我想先更好地理解它的语法。它的大纲是:
(function (root, ns, factory) {
// some code
} (window, 'detectZoom', function() {
// some more code
}));
请参阅 this post 中已接受的答案以供引用完整代码。
我了解最终结果是如何实现的,但我不太清楚内部 (...) block 与第一个 block 的关系,或者其中的逗号分隔列表告诉编译器什么。
谁能解释一下?谢谢。
最佳答案
有一个带三个参数(root
、ns
、factory
)的匿名函数会被立即调用。
root
取 `window 的值。ns
取值'detectZoom'
factory
取回调函数的值(也是匿名的)
解释:
(function (root, ns, factory) {
// the body of the anonymous function
} (window, 'detectZoom', function() {
// the body of the 'factory' callback
}));
分解一下,如何分四步得到这段代码:
1.
// Anonymous function.
(function (root, ns, factory) {/* body */});
2.
// Anonynmous function, immediately invoked
(function (root, ns, factory) {/* body */})(); // parentheses mean it's invoked
3.
// Callback as a separate argument
var cbk = function () {};
(function (root, ns, factory) {/* body */})(window, 'detectZoom', cbk);
4.
// Callback as an anonymous function
(function (root, ns, factory) {/* body */})(window, 'detectZoom', function () {});
您可以重写您的代码以使其更详细:
var outer = function (root, ns, factory) {
// the body
};
var callback = function () {
// the body
};
outer(window, 'detectZoom', callback);
关于javascript - javascript 函数后括号中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783044/