簡體   English   中英

Javascript變量為null,但進入if語句

[英]Javascript variable is null but goes in if-statement

我有一個奇怪的問題。 我試圖創建一個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');
    }
}

因此,我檢查是否設置了parent(以防萬一),parent不為null以及parent沒有class main-group 至少我認為這應該有效,但是我得到了錯誤:

TypeError: parent is null

在這一行上:

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

因此,這就是為什么我添加控制台日志以查看parent是否為null的原因。 你猜怎么了? console.log說的是正確的。 這意味着parent等於null,但它仍進入if語句中。 我使用&&,因此不應將它放在if語句中,因為已經有一個操作為false。

我讓其他人看着它,他們也無法弄清楚。

最后有一個semicolan ,使它在statement終止並executes下一條語句時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條件,因此是一個independent語句使其可以execute

你有一個 ”;” 在這行的結尾

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

這是導致問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM