我正在开发一个基于Java和JavaScript构建的应用程序,而今天我发现了一些我无法理解的代码。
var myVariable = (function(configObj){
var width = configObj.width;
var height = configObj.height;
})
gadgetFuncArray.push(myVariable);
我认为这会产生一系列功能?但我不确定你为什么要将一堆配置选项作为一系列函数推送。
思想
答案 0 :(得分:1)
在您的示例中,括号在功能上无用,可以轻松删除。人们有时(虽然不太常见,因为ES6)使用这些括号来创建IIFE。来自Wikipedia page:
立即调用的函数表达式可用于避免变量 从区块内吊起,防止污染全球 环境同时允许公众访问方法 保留函数中定义的变量的隐私。
这看起来像:(function () {})()
我建议您查看Kyle Simpson的详细电子书您不了解JS ,尤其是scope and closures上的部分。
答案 1 :(得分:1)
将一个函数包装在括号中没有什么特别之处,当你想在声明函数后立即调用函数时,这通常用于IIFE:
var module = (function foo(config) {
return {
getConfig: function() {
return config.my;
}
}
}({ my: 'config' }));
但是,您发布的代码似乎并未发生这种情况。有一些理由需要一组函数,尽管它在发布的代码中并不过分明显。