【问题标题】:Javascript variable is null but goes in if-statementJavascript 变量为 null 但进入 if 语句
【发布时间】:2016-01-11 21:07:51
【问题描述】:

我有一个奇怪的问题。我尝试创建一个 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');
    }
}

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

TypeError: parent is null

在这一行:

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

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

我让其他人看了,他们也想不通。

【问题讨论】:

  • 去掉if语句末尾的分号
  • 除了最后的分号外,不需要!=null检查,因为您最初检查父级是否为真if(parent)真值不能为空。
  • 是的,我知道,但它不起作用,所以我尝试了一堆东西,我什至检查了 null 作为字符串,因为我不知道了。

标签: javascript


【解决方案1】:

结尾处有一个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 条件,因此一个 independent 使其成为 execute

【讨论】:

  • 如果之后; 会怎样?
  • 好吧,我想我很愚蠢,不知道为什么我在 if 的末尾有一个分号。我会尽快接受你的回答。其实没看到。
  • 如果你这样做if (condition);那么它将是一个空语句
  • 那么欢迎我顺便读一下stackoverflow.com/questions/17036135/…我错了然后让我知道..if();然后下一条语句将被明确执行..它不依赖于可能 b OP 不想要的条件:)
  • @debin:由于某种原因,我无法编辑我的帖子,我会更新你的想法......一旦它......在那里
【解决方案2】:

你有一个“;”在这一行的末尾

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

这就是导致问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2019-03-02
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多