JavaScript - 变量在我重新赋值时更改其值

时间:2014-12-01 04:46:31

标签: javascript

如何将变量保留在事件侦听器中以避免被覆盖? 以下是一个例子。它会提醒两次'秒,而不是第一次'那么'第二'

var firstVar = 'first';

window.addEventListener('load',function(){
    alert(firstVar);
});

var firstVar = 'second';

window.addEventListener('load',function(){
    alert(firstVar);
});

我也试过,如下所示。

var firstVar = 'first';

window.addEventListener('load',function(){
    var temp = firstVar;
    alert(temp);
});

var firstVar = 'second';

window.addEventListener('load',function(){
    var temp = firstVar;
    alert(temp);
});

我的事件试图使用bind(this),但它们都没有工作。 有没有办法让它发挥作用,或者它无法发挥作用?

由于

2 个答案:

答案 0 :(得分:1)

因为你已经声明了两次相同的变量,所以只有最后一次页面加载才可用。就像你已经为它分配了新的值,所以你不能在警告中看到first

你必须做这样的事情:

var firstVar1 = 'first';

window.addEventListener('load',function(){
    alert(firstVar1);
});

var firstVar = 'second';

window.addEventListener('load',function(){
    alert(firstVar);
});

或更好地在单个加载事件中添加两个语句。像这样:

window.addEventListener('load',function(){
  var firstVar = 'first';  
    alert(firstVar);
    var firstVar = 'second';
    alert(firstVar);

});

或者你可以这样做:

var firstVar = 'first';

window.addEventListener('load',function(){
    alert(firstVar);
mymethod();

});

function mymethod(){

    var firstVar = 'second';
    alert(firstVar);
}

或类似于您的实施:

var firstVar = 'first';
localStorage.setItem("data1",firstVar);
window.addEventListener('load',function(){
    var first = localStorage.getItem("data1");
    alert(first);

});

var firstVar = 'second';
localStorage.setItem("data2",firstVar);
window.addEventListener('load',function(){
    var first = localStorage.getItem("data2");
    alert(first);

});

答案 1 :(得分:0)

您正在使用事件侦听器来请求firstVar

该文档只能加载一次,因此您可以获得相同的结果。

您就是这样做的

window.addEventListener('load',function(){
    var firstVar = 'First';
    alert(firstVar);

    var firstVar = 'Second';
    alert(firstVar);
});