我进行了以下检查,以查看某个元素是否应被视为“悬停”。
我很困惑,因为我看到元素设置为 state === 'hover'
当他们不应该的时候。
alert
message 更加令人困惑,因为它告诉我们刚刚计算为 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 )
);
}
以上代码的结果是 alert
像这样的消息:
当然,我们都同意 580 <= 60 + 48
评估为 FALSE
,对吧?
但警报仍然被调用...
最佳答案
element.pos.x
是一个字符串 ("60")。您需要将它(以及比较中的所有其他字符串)转换回数字。
关于javascript - 当表达式不可能为 TRUE 时,它的计算结果为 TRUE,不是吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964369/