2017-08-01 44 views
-2

每次運行此函數時,p1_Balance將始終重置爲10,並且不會保留增量或減量的新值。如何使返回變量在函數Increment/Decrement後保持一個新值?

function Balance() { 
    var p1_Balance=10; 
    var x= Math.floor(10*Math.random()); 
    if (x<5) { 
    p1_Balance=p1_Balance-1; 
    } else { 
    p1_Balance=p1_Balance+1; 
    } 
    return p1_Balance; 
} 
+1

[您應該閱讀更多關於範圍](https://stackoverflow.com/documentation/javascript/480/scope#t=20170801134516543515) – Nick

+1

@ruhul在問一個問題之前,可以做一些研究。 – Nick

回答

0

p1_Balance到函數,而不是每一個函數調用時初始化它:var p1_Balance = 10;

0

可能有幾種解決方案: 一個被宣佈p1_Balance爲全局變量。

var p1_Balance=10; 
function Balance(){ 

var x= Math.floor(10*Math.random()); 
if (x<5) { 
    p1_Balance=p1_Balance-1; 
} 
else { 
    p1_Balance=p1_Balance+1; 
} 
return p1_Balance; 
} 

另一種是,你可以通過平衡作爲函數參數:

function Balance(p1_Balance){ 

var x= Math.floor(10*Math.random()); 
if (x<5) { 
    p1_Balance=p1_Balance-1; 
} 
else { 
    p1_Balance=p1_Balance+1; 
} 
return p1_Balance; 
} 

..... 

value = Balance(10);// value=something that you want to change by that function. 
0

p1_Balance應的功能範圍之外聲明(意爲不函數本身內)。否則,每次調用函數時,將值設置爲10的初始化器也會運行。

var p1_Balance=10; 
function Balance(){ ... 
0

您可以使用Javascript closures創造你想要做的是什麼功能,你可以看到如下:

var Balance = (function() { 
 
    var p1_Balance = 10; 
 
    return function() { 
 
    var x = Math.floor(10 * Math.random()); 
 
    if (x < 5) 
 
     return p1_Balance += 1; 
 
    else 
 
     return p1_Balance -= 1; 
 
    }; 
 
})(); 
 

 
for (var i = 0; i < 10; i++) 
 
    console.log(Balance());

另外,您將需要定義p1_Balance變量函數之外或將其作爲參數傳遞。

相關問題