Javascript 使var值持久化,而不考虑时间间隔

Javascript 使var值持久化,而不考虑时间间隔,javascript,setinterval,var,Javascript,Setinterval,Var,以下是我的javascript代码: window.setInterval(run, 1000); var oldprice = 1; function run(){ var price = $('#s3').text(); if(price > oldprice){ console.log("price gone up"); var oldprice = price; } if(price == oldprice){

以下是我的javascript代码:

window.setInterval(run, 1000);
var oldprice = 1;

function run(){
    var price = $('#s3').text();
    if(price > oldprice){
        console.log("price gone up");
        var oldprice = price;
    }
    if(price == oldprice){
        console.log("price remains");
    }
    if(price < oldprice){
        console.log("price dropped");
        var oldprice = price;
    }
}
window.setInterval(运行,1000);
var-oldprice=1;
函数运行(){
var price=$('#s3').text();
如果(价格>旧价格){
console.log(“价格上涨”);
var oldprice=价格;
}
如果(价格==旧价格){
控制台日志(“价格剩余”);
}
如果(价格<旧价格){
console.log(“价格下跌”);
var oldprice=价格;
}
}

如何使
oldprice
的值持久化,以便记住它?

不要在函数中创建一个具有相同名称的局部范围的变量

var oldprice = price;

删除
var

不要在函数内创建一个局部作用域的同名变量

var oldprice = price;
移除
run()中的
var

,更改此选项:

var oldprice = price;
对此

oldprice = price;
当您想要访问具有全局作用域的变量时,您正在声明一个新变量(具有局部作用域

局部变量会遮挡全局变量。

换句话说,它们的名字相同并不重要,它们是不同的。它们被放置在不同的存储单元中

您的代码与此代码具有相同的行为:

window.setInterval(run, 1000);
var oldprice = 1;

function run(){
    var price = $('#s3').text();
    if(price > oldprice){
        console.log("price gone up");
        var local_oldprice = price;
    }
    if(price == local_oldprice){
        console.log("price remains");
    }
    if(price < local_oldprice){
        console.log("price dropped");
        var local_oldprice = price;
    }
}
window.setInterval(运行,1000);
var-oldprice=1;
函数运行(){
var price=$('#s3').text();
如果(价格>旧价格){
console.log(“价格上涨”);
var本地价格=价格;
}
如果(价格==本地价格){
控制台日志(“价格剩余”);
}
如果(价格<当地价格){
console.log(“价格下跌”);
var本地价格=价格;
}
}
JavaScript
中使用全局变量时,一般提示是将其名称命名为:

global\u oldprice

而不是:

oldprice

换句话说,在变量的名称中添加
全局\

另一种方法是创建一个全局数组,他的名字中包含了全局单词,全局变量是数组的单元格

通过这种方法,您的全局变量将被称为:

globalVars[i]

当然,这也取决于个人品味。

在您的
跑步()中,更改以下内容:

var oldprice = price;
对此

oldprice = price;
当您想要访问具有全局作用域的变量时,您正在声明一个新变量(具有局部作用域

局部变量会遮挡全局变量。

换句话说,它们的名字相同并不重要,它们是不同的。它们被放置在不同的存储单元中

您的代码与此代码具有相同的行为:

window.setInterval(run, 1000);
var oldprice = 1;

function run(){
    var price = $('#s3').text();
    if(price > oldprice){
        console.log("price gone up");
        var local_oldprice = price;
    }
    if(price == local_oldprice){
        console.log("price remains");
    }
    if(price < local_oldprice){
        console.log("price dropped");
        var local_oldprice = price;
    }
}
window.setInterval(运行,1000);
var-oldprice=1;
函数运行(){
var price=$('#s3').text();
如果(价格>旧价格){
console.log(“价格上涨”);
var本地价格=价格;
}
如果(价格==本地价格){
控制台日志(“价格剩余”);
}
如果(价格<当地价格){
console.log(“价格下跌”);
var本地价格=价格;
}
}
JavaScript
中使用全局变量时,一般提示是将其名称命名为:

global\u oldprice

而不是:

oldprice

换句话说,在变量的名称中添加
全局\

另一种方法是创建一个全局数组,他的名字中包含了全局单词,全局变量是数组的单元格

通过这种方法,您的全局变量将被称为:

globalVars[i]


当然,这也取决于个人喜好。

不要使用
var oldprice
inside
run()
函数重新创建变量。只需给它赋值,不要在
run()
函数中使用
var oldprice
重新创建变量。只要给它赋值就行了