Javascript似乎在说true ==false

Javascript appears to be saying true == false

本文关键字:true false Javascript      更新时间:2024-04-06

我有以下js函数。

function showAttentionItem(sender)
{
    debugger;
    var assistanceRequired = sender.parent().hasClass("assistanceRequired");
    if (assistanceRequired)
    {
        sender.children('.assistanceRequiredText').fadeToggle(0);
        if (sender.children('.assistanceRequiredText').is(":visible"))
        {
            sender.children('.studentPerformanceText').hide();
        }
    }
    if (!assistanceRequired)
    {
        if (sender.parent().hasClass("studentOutsideTargetRange"))
        {
            sender.children('.studentPerformanceText').fadeToggle(0);
        }
    }
}

当我运行它时发生的情况是,我点击调试器行,然后单步执行代码。 assistanceRequired true.

执行sender.children('.studentPerformanceText').hide();后,它跳转到的下一行是sender.children('.studentPerformanceText').fadeToggle(0);,在if (!assistanceRequired)语句内!

这怎么可能发生?

这保证有效:

if (sender.parent().hasClass("assistanceRequired"))
{
     // do whatever here
}
else
{
    // do whatever ELSE here
}

当编码正确时,只有一个或另一个可以运行,因为只有一个测试,并且它将在一次测试时truefalse。它不可能被一些你不知道的副作用改变,这很可能是正在发生的事情。这是没有争议的。

如果这不能按照您想要的方式工作,那么您没有显示其他错误,并且没有可执行的 jsFiddle 祝你好运,让任何人相信像 if ... else 结构这样的基本东西被破坏了。

我只能想到一种场景来解释你所看到的。

showAttentionItem() 存在双重触发,在调试器中,这被视为单个调用。在第一个呼叫中,援助要求为真,在第二个呼叫中为假。