[英]I need to access a variable outside of the function it is currently in. (JavaScript & NodeJS)
我知道 JavaScript 不會讓我在 function app.get
之外使用var result
。 不管我怎么想,我似乎都找不到解決辦法。
我需要訪問 function app.post
中的var result
,但它當前位於 function app.get
中,並且必須留在app.get
內部,因為它充滿了隨機數,並且在app.get
內部可以讓我生成新的隨機數每次刷新頁面時的數字......這是代碼:
app.get("/", function(request, response) {
var random = Math.round(Math.random() * 1);
var firstNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var secondNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var operations = random ? ["+", "-"] : ["*", "/"];
var randomOperation = operations[Math.round(Math.random() * 1)];
var expression = firstNumber + randomOperation + secondNumber;
var resultNotInterger = eval(expression);
var result = Number(resultNotInterger).toFixed(2);
response.render("index.ejs", {
firstNumber: firstNumber,
secondNumber: secondNumber,
randomOperation: randomOperation,
result: result
});
});
app.post("/", function(request, response) {
var clientResponse = Number(request.body.clientResponse).toFixed(2);
var machineResponse =
response.redirect("/");
console.log(result);
});
有沒有天才可以解決這個問題?
謝謝。
似乎隨機數生成部分與get請求無關。 您始終可以將其移至單獨的 function 並從兩條路由中調用它,如下所示:
function getRandomNumbers() {
var random = Math.round(Math.random() * 1);
var firstNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var secondNumber = random ? (Math.random() * (10000) - 5000).toFixed(2) : (Math.round(Math.random() * (100)) - 50);
var operations = random ? ["+", "-"] : ["*", "/"];
var randomOperation = operations[Math.round(Math.random() * 1)];
var expression = firstNumber + randomOperation + secondNumber;
var resultNotInterger = eval(expression);
var result = Number(resultNotInterger).toFixed(2);
return {
firstNumber,
secondNumber,
randomOperation,
result,
}
}
app.get("/", function(request, response) {
const {
firstNumber,
secondNumber,
randomOperation,
result,
} = getRandomNumbers();
response.render("index.ejs", {
firstNumber: firstNumber,
secondNumber: secondNumber,
randomOperation: randomOperation,
result: result
});
});
app.post("/", function(request, response) {
const { result } = getRandomNumbers();
var clientResponse = Number(request.body.clientResponse).toFixed(2);
var machineResponse =
response.redirect("/");
console.log(result);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.