我遗漏了一些关于在哪里声明以及如何在webapp的生命周期中使用JS变量的理解难题
对于这个例子,我有一些带标记的地图布局。在某些范围内,我需要声明标记对象并将它们添加到地图中。
稍后在代码中,我想访问它们,因为我无法从地图中提取它们。
想到的一个解决方案是全局变量。 另一个是创建一个对象来保存这些标记,但该对象也需要是全局的
是否有其他方法来构建代码以便可以访问变量?
答案 0 :(得分:0)
标准方法之一是作为范围的包装函数:
var MyPublicApi = (function() {
// Scope-global variables
var mapMarkers = [];
// All non-public functions
function myFunction() {
// Something
}
// Initialization stuff
mapMarkers.push(/* a marker */);
// Return a public api, e.g. like this
var api = {
getMarkers: function() {
return mapMarkers;
}
};
})();
外部函数声明允许您限制变量的可见性,这些变量的行为类似于函数中所有代码的全局变量。
如果您不想提供任何公开API,可以使用
(function() {
// ...
})();
而不是
var MyPublicApi = (function() {
// ...
})();