否则,如果语句具有 3 个或更多条件

Else if statement with 3 or more conditions?

本文关键字:条件 如果 语句 否则      更新时间:2023-09-26

我已经尝试了很长时间,似乎无法弄清楚我做错了什么。第一个条件似乎也有效,但第三个条件失败了。

function spriteAI1() {
                if (c2Sprite.position.x >= 30 && c2Sprite.position.x <= 450) { 
                c2Sprite.translateX( -10 );
                } else if (c2Sprite.position.x <= 30 && c2Sprite.position.x >= -450) {
                c2Sprite.translateX( 10 );
                } else if (c2Sprite.position.z = 30 && c2Sprite.position.x = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   
            function spriteAI2() {
                if (c2Sprite.position.z >= 30 && c2Sprite.position.z <= 350) { 
                c2Sprite.translateZ( -10 );
                } else if (c2Sprite.position.z <= -30 && c2Sprite.position.z >= -350) {
                c2Sprite.translateZ( 10 );  
                } else if (c2Sprite.position.x = 30 && c2Sprite.position.z = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   

我在线收到错误

else if (c2Sprite.position.x = 30 && c2Sprite.position.z = 30)

错误说invalid left hand in assignment.但是另一个函数的行基本相同,不会生成错误。

我可以在你的代码中看到两个问题。

首先,比较是使用==(双等号)而不是单个等号(分配值)完成的。这可能是您问题的根源。

其次,您的最后两个条件与一组共同的值匹配(它们相交),在c2Sprite.position.x等于 30 的情况下,它将输入第二个"if"。它将匹配第三个的条件,但它不会运行它。

确保始终定义分隔良好的条件组(除非这是您想要的行为)。

只是为了说清楚:

if (x >= 30) {
    /* this matches 30 and above */
}
else if (x == 30) {
    /* this won't execute on x == 30, because it entered the first "if" */
}

您应该这样做:

if (x > 30) {
    /* this matches numbers strictly greater than 30, i.e. 31, 32, 33... */
}
else if (x == 30) {
    /* this will match x == 30 */
}
else {
    /* any other value for x */
}