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; }
4

3 回答 3

98

我喜欢这个:

if (wlocation !== undefined)

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

if (typeof wlocation  !== "undefined")
于 2012-11-28T14:47:25.280 回答
13

我通常喜欢速记版本:

if (!!wlocation) { window.location = wlocation; }
于 2012-11-28T14:48:41.540 回答
4

$.fn.attr(attributeName)将属性值作为字符串返回,或者undefined在属性不存在时返回。

由于"", 和在 JavaScriptundefined中都是虚假的(当强制为布尔值时计算为 false),在这种情况下,我将编写如下检查:

if (wlocation) { ... }
于 2012-11-28T14:45:05.023 回答