我需要访问当前所在函数之外的变量。(JavaScript和NodeJS)
我知道JavaScript不允许我在函数我需要访问当前所在函数之外的变量。(JavaScript和NodeJS),javascript,node.js,function,Javascript,Node.js,Function,我知道JavaScript不允许我在函数app.get之外使用var result。不管我怎么绞尽脑汁,我似乎都找不到解决办法 我需要在函数app.post中访问var result,但它当前在函数app.get中,并且必须留在app.get中,因为它充满了随机数,并且在app.get中。get允许我在每次刷新页面时生成新的随机数。。。代码如下: app.get("/", function(request, response) { var random = Math.rou
app.get
之外使用var result
。不管我怎么绞尽脑汁,我似乎都找不到解决办法
我需要在函数app.post
中访问var result
,但它当前在函数app.get
中,并且必须留在app.get
中,因为它充满了随机数,并且在app.get中。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 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);
});
我不知道你可以在函数“global”中声明一个变量,很抱歉给你带来不便,但是你能告诉我把它放在哪里吗?我还在学习。问题是,如果我把变量放在全局范围内,当我刷新页面时,随机数将保持不变,在这种情况下,再次随机数的唯一方法是重新启动服务器。如果我把它放在“app.get”中,那么每次刷新网站时,数字都会随机化,但我无法从该功能之外的任何地方访问任何数据,例如在“app.post”功能中。@WiseEye在“app.get”中生成随机数,你到底想实现什么当您可以在不刷新页面的情况下声明函数以尽可能长的时间完成时。@AbuSufian JavaScript中没有关键字“global”。您可以在每次使用
get
路由时重新分配全局变量。然后在post
路线中使用它。嘿,谢谢你的回复。我看到的问题是,尽管它确实访问了一个“结果”,但我认为它是另一个随机生成的结果。app.get的“结果”与app.post console.log的“结果”不匹配。有办法解决这个问题吗?谢谢