如果声明有3个或更多条件?

时间:2013-09-25 22:59:58

标签: javascript html5 three.js

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

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。但是另一个函数基本上是相同的行,并且不会产生错误。

1 个答案:

答案 0 :(得分:0)

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

首先,使用==(双等号)进行比较,而不是一个(分配值)。这可能是你问题的根源。

在第二位,您的最后两个条件匹配一组共同的值(它们是相交),在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 */
}