首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript LocalStorage作用域

Javascript LocalStorage作用域
EN

Stack Overflow用户
提问于 2017-08-14 15:17:42
回答 3查看 553关注 0票数 1

我第一次使用本地存储,并遇到了一些范围问题。

当我尝试console.log(test)时,我在第二个if语句中获得了undefined。我做错了什么?

我的代码如下;

代码语言:javascript
复制
$("document").ready(function(){

    var is_stopped = false;

    source.onmessage = function(event) {

        if (is_stopped) {
            localStorage.setItem('offline', event.data);
            var test = localStorage.getItem('offline');
            console.log(test); // works here
        }       

        if (!is_stopped) {
            document.getElementById("result").innerHTML += "Data:" + event.data + "<br>";
            console.log(test); // undefined 
        }

        $("#start").click(function(){
            is_stopped = false;
        });

        $("#stop").click(function(){
            is_stopped = true;
        });

});

<div id="result"></div>
<button id="stop"> stop</button>
<button id="start"> start</button>
EN

Stack Overflow用户

回答已采纳

发布于 2017-08-14 15:24:32

这可能是因为is_stopped是假的,因此它不会输入第一个if,也不会检索值。注意,函数中声明的变量在函数结束时是垃圾收集的。

代码语言:javascript
复制
var test;//stays persistent
source.onmessage = function(event) {

    if (is_stopped) {
        localStorage.setItem('offline', event.data);
        test = localStorage.getItem('offline');
        console.log(test); // works here
    }       

    if (!is_stopped) {
        document.getElementById("result").innerHTML += "Data:" + event.data + "<br>";
        console.log(test);
    }
};

提示:将单击事件侦听器移到其他侦听器之外使它们工作得更好.

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45677779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档