Jon*_*com 2 javascript evaluation logic expression operator-precedence
我有以下检查,看看是否应该将元素视为"悬停".
我很困惑,因为我看到元素设置为state === 'hover'不应该的时候.
该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 )
);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会产生如下alert消息:

当然,我们都同意580 <= 60 + 48评估FALSE,对吗?
然而警报仍被称为......
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |