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