开发者问题收集

Javascript 变量为空但进入 if 语句

2016-01-11
1240

我遇到了一个有点奇怪的问题。我尝试创建一个 jsfiddle,但没有得到相同的结果,所以很抱歉我无法分享更多我所拥有的内容。

var parent = id && Number(oldParent) !== 1 ? $('#main_container #item_' + itemId).parent().parent().prev() : null;

这是我获取父级的方法。当不需要时,它应该为 null。

后来,我在同一个函数中得到了这个检查:

if (parent && parent != null && !parent.hasClass('.main-group'));
{
    console.log(parent == null);
    var siblingCount = parent.next().children().length;

    if (siblingCount === 0)
    {
        parent.removeClass('group');
        parent.addClass('normal-item');
    }
}

因此,我检查父级是否已设置(以防万一),父级不为 null,并且父级没有类 main-group 。这应该可以工作,至少我认为是这样,但我得到了错误:

TypeError:父级为 null

在此行:

var brothers/siblingCount = parent.next().children().length;

因此,这就是我添加控制台日志以查看父级是否为 null 的原因。猜猜怎么了?console.log 显示 true。这意味着 parent 等于 null,但它仍然进入 if 语句。我使用 &&,因此它不应该进入 if 语句,因为已经有一个操作为 false。

我让其他人看了它,他们也搞不懂。

2个回答

末尾有一个 分号 ,这使得它在 语句 终止并且下一个语句 执行 时执行。

var parent = null;
if (parent && parent != null && !parent.hasClass('.main-group'));{
   alert("Hello");
}

对于 Debin 的评论:

var parent = null;
if (parent != null); { alert("Vinoth") }

// The above one is equivalent:

if (parent != null) do nothing ;
alert ("hi");

JavaScript 认为您有一个 语句,并且它右边的所有内容都被视为不再属于 if 条件,因此是一个 独立 的语句,使其 执行

Thalaivar
2016-01-11

此行末尾有一个“;”

if (parent && parent != null && !parent.hasClass('.main-group'));

这就是导致问题的原因。

abisheksampath
2016-01-11