Javascript中的未定义变量:typeof和not之间存在差异

时间:2014-05-25 14:12:31

标签: javascript node.js undefined

我不明白这两种检查变量是否未定义的方法之间的区别:

if (typeof res.locals.user.hashnodes === 'undefined') {
        morphemes = 0;
}

if (!res.locals.user.hashnodes) {
       morphemes = 0;
}

对我来说,只有第二种选择有效,第一种选择不起作用。谁知道为什么?

(res.locals.user是我在Node Js应用程序中传递的用户设置)。

谢谢!

3 个答案:

答案 0 :(得分:1)

JavaScript具有所谓的假名变量,这意味着!res.locals.user.hashnodes评估为undefined0false等等。这里有关于虚假和真实变量的更多信息。

http://www.sitepoint.com/javascript-truthy-falsy/

答案 1 :(得分:1)

如果morphemes = 0res.locals.user.hashnodes undefined ,则第二个将设置false null 0

其中拳头只会这样做undefined

答案 2 :(得分:1)

if (!res.locals.user.hashnodes)还会检查现有的错误值。 如果您只使用0, false, '', null, 'undefined', []true将全部评估为!

Here's a more thorough list of what evaluates to what

那么你的当地人有什么价值?

console.log(typeof res.locals.user.hashnodes)

如果不是'undefined',那就是你的答案