我是JS的一个新人,我在手机屏幕上做移动项目,我想知道如何在整个页面范围内保留一个变量,不是全局变量,因为它会占用大量内存对于移动开发者来说是不可接受的,我在页面中有两个或更多JS标签,如图所示,
<script type="text/javascript">
// script one here
</script>
<html> //html block here </html>
<script type="text/javascript">
// script two here
</script>
所以我要求你提出宝贵的建议&amp;救命。谢谢!
答案 0 :(得分:2)
“整体页面范围”是全球范围。
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之后删除窗口对它的引用,这意味着根本没有全局变量)
*技术上尝试/捕获并引入范围,但它们非常罕见,不应该像这样使用