我不明白这两种检查变量是否未定义的方法之间的区别:
if (typeof res.locals.user.hashnodes === 'undefined') {
morphemes = 0;
}
和
if (!res.locals.user.hashnodes) {
morphemes = 0;
}
对我来说,只有第二种选择有效,第一种选择不起作用。谁知道为什么?
(res.locals.user是我在Node Js应用程序中传递的用户设置)。
谢谢!
答案 0 :(得分:1)
JavaScript具有所谓的假名变量,这意味着!res.locals.user.hashnodes
评估为undefined
,0
,false
等等。这里有关于虚假和真实变量的更多信息。
答案 1 :(得分:1)
如果morphemes = 0
为res.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'
,那就是你的答案