我的节点应用程序中有一个端点,我正在执行以下操作...
app.put('/api/authentication', function(req,res){
console.log(global.ff); //undefined
console.log(req.ff); //undefined
console.log(blah); //throws error
});
我不明白为什么前两个给我“未定义”#。他们应该抛出一个错误,因为我从来没有宣布它们。但是就好像node.js已经神奇地声明了它们,这也就是为什么它们不像最后一个那样抛出错误......有人可以解释一下吗?
答案 0 :(得分:2)
undefined
和“不存在”
在前两行中,global
和req
是现有变量,它们只是没有您要求的keys - 所以您得到{{1} }。
但是,undefined
根本不存在 - 节点甚至无法询问您正在寻找的密钥。请注意,您可以根据this answer测试未定义。
如果您已定义上述blah
,但未对其设置任何值(blah
),则会在那里收到另一个var blah;
错误。
答案 1 :(得分:0)
global
和req
是现有变量。
要求现有变量中的密钥返回它,如果没有找到 - 告诉密钥是undefined
。
下一个代码也将返回undefined:
var blah = "";
console.log(blah.blah);