Nodejs 有什么问题?
What is wrong with Nodejs?
我正在使用 multer 来处理上传图片。
app.use(multer({ dest: './public/photos',
rename: function (fieldname, filename) {
return filename+Date.now();
},
onFileUploadStart: function (file) {
console.log(file.originalname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
//a='asass';
done=true;
}
}));
app.post('/api/photo',function(req,res){
if(done==true){ //ERROR here if I remove comment on 'a=asass' >> 'done' is not defined
console.log(req.files);
console.log(req.body);
res.end("File uploaded.");
}
});
我没有在任何地方声明 "done" 变量,为什么这段代码仍然有效?。如果我删除对 "a = asass" 的评论,我会得到上面的错误。 (我没有在任何地方声明 "a" 变量)。我应该在为变量赋值时得到错误,但它并没有发生。
done=true
所做的是声明一个名为 done
的全局变量。为了使其不是全局变量,请使用 var
关键字,例如var done = true
。声明全局变量通常被认为是一个坏主意。 JavaScript 有一个名为 strict mode
的可选模式,可防止您意外声明全局变量 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode
在任何地方都使用 strict mode
是标准做法,通常在 .js 文件的顶部声明。
我正在使用 multer 来处理上传图片。
app.use(multer({ dest: './public/photos',
rename: function (fieldname, filename) {
return filename+Date.now();
},
onFileUploadStart: function (file) {
console.log(file.originalname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
//a='asass';
done=true;
}
}));
app.post('/api/photo',function(req,res){
if(done==true){ //ERROR here if I remove comment on 'a=asass' >> 'done' is not defined
console.log(req.files);
console.log(req.body);
res.end("File uploaded.");
}
});
我没有在任何地方声明 "done" 变量,为什么这段代码仍然有效?。如果我删除对 "a = asass" 的评论,我会得到上面的错误。 (我没有在任何地方声明 "a" 变量)。我应该在为变量赋值时得到错误,但它并没有发生。
done=true
所做的是声明一个名为 done
的全局变量。为了使其不是全局变量,请使用 var
关键字,例如var done = true
。声明全局变量通常被认为是一个坏主意。 JavaScript 有一个名为 strict mode
的可选模式,可防止您意外声明全局变量 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode
在任何地方都使用 strict mode
是标准做法,通常在 .js 文件的顶部声明。