jQuery / Javascript代码检查,如果未定义

41

这段代码好吗?

var wlocation = $(this).closest('.myclass').find('li a').attr('href');
if (wlocation.prop !== undefined) { window.location = wlocation; }

还是我应该怎么做呢?

var wlocation = $(this).closest('.myclass').find('li a').attr('href');
if (wlocation.prop !== "undefined") { window.location = wlocation; }
3个回答

103

我喜欢这个:

if (wlocation !== undefined)

但是如果您更喜欢第二种方式,它不会像您发布的那样。 它应该是:

if (typeof wlocation  !== "undefined")

1
wlocation 只是一个字符串(href 属性的值),因此它没有任何 prop 属性... - Bruno

14

我通常喜欢使用简写版本:

if (!!wlocation) { window.location = wlocation; }

2
+1 真的很好,我不知道 !! 命令可以用于判断是否未定义。 - Michel Ayres
4
@MichelAyres !! 不是一个特殊的"运算符"或"未定义"...它基本上是两个非运算符在一起,比如; !!undefined => 非(非undefined) => 非(true) => false - Christian

4

$.fn.attr(attributeName)会返回属性值的字符串,如果属性不存在,则返回undefined

由于在JavaScript中,""undefined都是falsy(在强制转换为布尔值时,会被视为false)值,因此在这种情况下,我会按以下方式编写检查:

if (wlocation) { ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接