2017-06-15 24 views
-1

我已经搜索了这个,并没有得到任何东西。我一定在做错事,但不能弄清楚什么。我有以下代码:Nodejs:未定义的变量如何评估为真?

var token = req.cookies.token; 

// decode token 
if (typeof token !== 'undefined' && token && token.trim()) { 

    // if everything is good, save to request for use in other routes 
    req.token = token; 

    console.log("Token found"); 
    console.log("Token:" + token); 

    next(); 

} 

运行此,我得到下面的输出:

0|app | Token found 
0|app | Token:undefined 

即令牌计算结果为真实的,但后来当我尝试将其写入控制台它未定义。我的问题是,如果令牌未定义,if语句如何计算为真?

谢谢。

+1

尝试打印'typeof token' :) –

+0

console.log(typeof token)打印什么? –

+0

typeof token = string显然。我仍然不确定为什么这应该被定义为一分钟而不是下一个?谢谢你的帮助。 – zazzy78

回答

2

令牌设置为'undefined',一个字符串。也许当你保存cookie时,该值是未定义的

+0

感谢大家。我明白现在发生了什么,即令牌字符串在别处被设置为“未定义”。 – zazzy78

0

除了其他人都说undefined是字符串,这意味着你将需要修复存储的令牌,因此它不会将undefined存储为字符串(根本不存储它)

您在if语句中也有不必要的检查。您可以摆脱typeof标记!=='undefined'就像(标记)将处理该情况一样。