speed=speed>0?Math.ceil(speed):Math.floor(speed);这个语法怎么理解?

来源:3-1 JS缓冲动画

名字只是个代号丶

2016-08-03 11:48

speed=speed>0?Math.ceil(speed):Math.floor(speed)这句话的语法就是

速度大于0就向上取整,速度小于0就向下取整吗?

Math.ceil(speed):Math.floor(speed)  中间的这个引号是else的意思吗?

不应该是这样写吗?

if(speed>0){

Math.ceil(speed);

}else{

Math.floor(speed);

}

但是这样写不行啊,回不去。

写回答 关注

2回答

  • Encoretune
    2016-08-11 15:00:14

    speed=speed>0?Math.ceil(speed):Math.floor(speed)是一个三目运算符,一般形式为:
    表达式1? 表达式2: 表达式3 
    其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 你的没有输出啊,可以改为

    if(speed>0){

    speed=Math.ceil(speed);

    }else{

    speed=Math.floor(speed);

    }


  • 慕盖茨4878874
    2016-08-03 12:15:45

    对的,就是当这个数字是8.3或8.7都取9,如果是(-8.3)或(-8.7)取(-9)这样就保证鼠标覆盖和鼠标移出这两个动作执行的速度一致。Math.ceil(speed):Math.floor(speed)  这是一个真假的判断,就是判断这个speed>0是真还是假,真就取Math.ceil(speed),假就取Math.floor(speed)。你那样写是没问题的,只不过前面这种方法可以一行写出。而且可以回去的,我也试了一下,应该是你其它地方的问题,这只不过是不同的写法罢了,希望对你有帮助哈。

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题