【发布时间】:2018-03-22 00:50:57
【问题描述】:
代码如下:
var app = require('express')()
app.get('/',function(req,res){
var flag = 0
console.log(flag)
res.send('ok')
flag ++
}
app.listen(3001)
每次我请求 url '/' 时,它都会控制台 '0' 这不是我更喜欢的 'plus plus',并且我不想将 express 中间件之外的变量定义为全局变量。你想告诉我如何在中间件中像静态变量一样使用变量 plus plus。
提前感谢这个小问题。
【问题讨论】:
-
不要在回调处理程序中声明/分配 var - 在
app下方立即这样做,然后它应该可以工作。 -
@AlexanderNied 谢谢,但我不想在回调之外声明,我认为这不专业。
-
在回调之外声明它不会使它成为全局的。 Node 将每个文件中的代码包装在自己的函数中,因此
flag变量将无法在当前文件之外访问。如果您想使用var进一步限制它,您可以使用IIFE,或者使用let并将其包装在一个块中。 -
@skirtle 谢谢它很有用,但是用 'let' 代替 'var' ,加号仍然不起作用
-
只是将
var更改为let不会解决任何问题,您仍然需要将变量移到函数之外。我提到了let,因为将它包装在块作用域中可以替代使用 IIFE。在实践中,我可能不会打扰任何一个,因为它无论如何都不会是全球性的。
标签: javascript node.js express closures