Javascript 变量为 null 但进入 if 语句

标签 javascript

我有一个奇怪的问题。我尝试创建一个 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 类。这应该有效,至少我认为是这样,但我收到错误:

类型错误:父级为空

在这一行:

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

所以,这就是我添加控制台日志以查看父级是否为空的原因。你猜怎么了? console.log 说的是真的。这意味着 parent 等于 null,但它仍然在 if 语句中。我使用 && 所以它不应该出现在 if 语句中,因为已经有一个操作是错误的。

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

最佳答案

末尾有一个semicolan,它在statement 终止和下一个语句executes 时执行。

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

对于德斌评论:

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

// The above one is equivalent:

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

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

关于Javascript 变量为 null 但进入 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721702/

相关文章:

javascript - 如何使用 Google Places API 获取邮政编码?

javascript - 相当于 ":not"的 jQuery 选择器

javascript - 结构中的 samplerCube 导致 GL_INVALID_OPERATION

JavaScript - 返回两个对象之间的差异?

javascript - 机器人框架 : How to add user-confirmation step to CancelAndHelpDialog

javascript - JS : use grunt + mocha + phantomjs

javascript - .click() 在 IE11 中拒绝访问

javascript - Uncaught ReferenceError : getDetails is not defined

javascript - 检查一个字符在字符串中出现了多少次

javascript - 所有可拖动元素掉落后如何显示消息?