Javascript 如何清除变量';在第一次调用函数之后

Javascript 如何清除变量';在第一次调用函数之后,javascript,variables,compare,Javascript,Variables,Compare,我试图清除一个变量的内存,因为函数只在第一次调用时正确工作,之后如果我更改输入中的值,函数将在旧的输入上工作。。。我可以清理旧的价值观吗?我尝试使用x,y=未定义,但它不起作用 var btn = document.getElementById("mybutton"); btn.addEventListener("click", compareValue); var x = Number(document.getElementById("va

我试图清除一个变量的内存,因为函数只在第一次调用时正确工作,之后如果我更改输入中的值,函数将在旧的输入上工作。。。我可以清理旧的价值观吗?我尝试使用x,y=未定义,但它不起作用

var btn = document.getElementById("mybutton");


btn.addEventListener("click", compareValue);
var x = Number(document.getElementById("value1").value);
var y = Number(document.getElementById("value2").value);
function compareValue (){
  if (x>y){window.alert("Value 1 bigger")
}else if(y>x){window.alert("Value 2 bigger")
}else{window.alert("Values are equal")};

document.getElementById("value1").value="";
document.getElementById("value2").value="";

x=undefined;
y=undefined;
};


只需在传递给
addEventListener()
的函数中移动变量声明,如下所示:

var btn = document.getElementById("mybutton");


btn.addEventListener("click",compareValue);

function compareValue(){
    var x = Number(document.getElementById("value1").value);
    var y = Number(document.getElementById("value2").value);
    if(x > y){
        window.alert("Value 1 bigger");
    }else if(y > x){
        window.alert("Value 2 bigger");
    }else{
        window.alert("Values are equal");
    }

    document.getElementById("value1").value = "";
    document.getElementById("value2").value = "";
};

这将导致它们被限定在
compareValue
函数的内部,并在函数结束时被删除。(在该函数之外,它们将不可访问(甚至不存在)。

只需将变量声明移动到传递给
addEventListener()
的函数中,如下所示:

var btn = document.getElementById("mybutton");


btn.addEventListener("click",compareValue);

function compareValue(){
    var x = Number(document.getElementById("value1").value);
    var y = Number(document.getElementById("value2").value);
    if(x > y){
        window.alert("Value 1 bigger");
    }else if(y > x){
        window.alert("Value 2 bigger");
    }else{
        window.alert("Values are equal");
    }

    document.getElementById("value1").value = "";
    document.getElementById("value2").value = "";
};
这将导致它们被限定在
compareValue
函数的内部,并在函数结束时被删除。(在该功能之外,它们将无法访问(甚至不存在)