2014-05-20 28 views
0

這裏是我的javascript代碼:化妝VAR值執着,無論間隔

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; 
    } 
} 

我怎樣才能使oldprice持久的價值,所以它記住了嗎?

+1

不要在'run()'函數內用'var oldprice'重新創建變量。只要給它分配價值 – Catalin

回答

1

,改變這種:

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; 
    } 
} 

一般尖,在JavaScript使用全局變量時,是有他們的名字是:

global_oldprice

,而不是:

oldprice

換句話說,在變量名稱中加上global_

另一種方法是創建一個全局數組,其名稱包含全局字,全局變量是數組的單元格。

這種做法,你的全局變量會被稱爲:

globalVars[i]

但是,當然,這也要看個人口味。

+0

這很好,非常感謝你! – Wannes

4

不要創建同名的局部範圍變量的函數內部

var oldprice = price; 

run()內部取出var