gpt4 book ai didi

javascript - 如何在整个页面范围内保留变量 - Javascript

转载 作者:行者123 更新时间:2023-12-02 18:39:27 25 4
gpt4 key购买 nike

我是 JS 的新人,我正在phonegap 中做一个移动项目,我想知道如何在整个页面范围内保留变量,不是全局变量,因为它会占用大量内存对于移动开发人员来说这是 Not Acceptable ,我在一个页面中有两个或多个 JS 标签,如图所示,

<script type="text/javascript">
// script one here
</script>

<html> //html block here </html>

<script type="text/javascript">
// script two here
</script>

所以我请求您提出宝贵的建议和帮助。谢谢!

最佳答案

“总体页面范围”全局范围。

JavaScript 作用域(通常,除了特定深奥的作用域*)有两种工作方式:

  • 全局范围
  • 闭包作用域(函数创建的作用域)

由于您无法通过脚本标记共享函数,因此全局函数是您唯一的选择。

考虑传递消息来共享数据而不是全局数据。

以下是如何通过消息传递来完成类似的事情:

脚本0:

window.pubsub = (function(){
var subscribers = [];
return {
subscribe:function(user){
subscribers.push(user);
},
publish:function(message,data){
subscribers.forEach(function(elem){
elem.onMessage(data);
});
}
};
})();

脚本1:

(function(pubsub){
var someObject = {}; // to share state
//code here
pubsub.subscribe(someObject);

someObject.onMessage = function(){
//whatever you do when you get a message
};
})(window.pubsub);

脚本 2 是相同的,只是处理消息的方式不同。

这样,您就有了一个全局变量(如果太多,您甚至可以在订阅脚本 2 后删除窗口对它的引用,这意味着根本没有全局变量)

*从技术上讲,try/catch 也引入了范围,但它们非常罕见,不应该这样使用

关于javascript - 如何在整个页面范围内保留变量 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977675/

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