我进行以下检查,看看是否应将元素视为“悬停”。

我很困惑,因为我看到元素设置为state === 'hover',而不应设置为alert
alert消息更加令人困惑,因为它告诉我们刚刚被评估为true的表达式是不应该的(如果您从逻辑上考虑)。

if( (ig.gui.cursor.pos.x >= element.pos.x)
    && (ig.gui.cursor.pos.x <= element.pos.x + element.size.x)
    && (ig.gui.cursor.pos.y >= element.pos.y)
    && (ig.gui.cursor.pos.y <= element.pos.y + element.size.y)
    && !element.disabled ) {

    state = 'hover';

    alert(

        'This statement evaluates to true: '

        + ig.gui.cursor.pos.x
        + '>='
        + element.pos.x
        + '&&'
        + ig.gui.cursor.pos.x
        + '<='
        + element.pos.x
        + '+'
        + element.size.x
        + '&&'

        + ig.gui.cursor.pos.y
        + '>='
        + element.pos.y
        + '&&'
        + ig.gui.cursor.pos.y
        + '<='
        + element.pos.y
        + '+'
        + element.size.y
        + '&&'

        + ( !element.disabled )

    );

}

上面的代码会生成580 <= 60 + 48消息,如下所示:

当然,我们都可以同意FALSE的计算结果为ojit_code,对吗?

然而警报仍然被召唤...

最佳答案

element.pos.x是字符串(“60”)。您需要将其(以及比较中的所有其他字符串)转换回数字。

关于javascript - 当表达式不可能为TRUE时,其计算结果为TRUE,对吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13964369/

10-09 00:47