Javascript 表达式在无法';这不可能是真的,是吗?

Javascript 表达式在无法';这不可能是真的,是吗?,javascript,logic,expression,evaluation,operator-precedence,Javascript,Logic,Expression,Evaluation,Operator Precedence,我进行了以下检查,以确定是否应将元素视为“悬停在”上方 我非常困惑,因为我看到元素被设置为state===“hover”,而它们不应该被设置 alert消息更令人困惑,因为它告诉我们刚刚计算为true的表达式是不应该的表达式(如果您从逻辑上考虑) if((ig.gui.cursor.pos.x>=element.pos.x) &&(ig.gui.cursor.pos.x=element.pos.y) &&(ig.gui.cursor.pos.yelement.pos.x是一个字符串(“60”)。

我进行了以下检查,以确定是否应将元素视为“悬停在”上方

我非常困惑,因为我看到元素被设置为
state===“hover”
,而它们不应该被设置

alert
消息更令人困惑,因为它告诉我们刚刚计算为true的表达式是不应该的表达式(如果您从逻辑上考虑)

if((ig.gui.cursor.pos.x>=element.pos.x)
&&(ig.gui.cursor.pos.x=element.pos.y)

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

使用
console.log()
确认错误(而不是
alert()
)您确定它们都是整数吗?因为我可以看到字符串“5…”比较中的任何值都可能是字符串吗?当然,不要执行
+element.pos.x+++element.size.x
do
+(element.pos.x+element.size.x)
看看你得到了什么如果你用
-
s替换那些
+
s或者使用前缀
+
操作符,那么你就可以开始了。
element.pos.x+element.size.x
->
element.pos.x--element.size.x
或者
+element.pos.x++element.x
因为减法操作符和前缀
+
运算符都将其参数强制为数字。如果答案是这样的,我相信是这样的,那么您将得到
580>=60
580
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 )

    );

}