[英]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.