为什么一些节点属性在我记录它们时显示为未定义?

Why do some node properties give me undefined when I log them?

本文关键字:显示 未定义 记录 节点 属性 为什么      更新时间:2023-09-26

我在我的节点应用程序中有一个端点,我正在做以下操作…

app.put('/api/authentication', function(req,res){            
    console.log(global.ff);  //undefined
    console.log(req.ff);     //undefined
    console.log(blah);       //throws error    
});

我不明白为什么前两个给我'undefined'。它们应该抛出一个错误,因为我从来没有声明过它们。但就好像node.js神奇地声明了它们,这就是为什么它们不会像上一个那样抛出错误…有人能解释一下吗?

undefined和"不存在"有区别

在前两行中,globalreq是存在的变量,它们只是没有您要求的键-所以您得到undefined

然而,blah根本不存在——node甚至没有地方请求您正在寻找的密钥。请注意,您可以根据此答案测试未定义。

如果您在上面定义了blah,但没有为它设置值(var blah;),那么您将得到另一个undefined错误。

globalreq为已存在的变量。

在现有变量中请求键返回它,如果没有找到-告诉键是undefined

下一段代码也将返回undefined:

var blah = "";
console.log(blah.blah);