簡體   English   中英

我需要訪問它當前所在的 function 之外的變量。(JavaScript 和 NodeJS)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM