不理解这个javascript方程式

时间:2011-11-25 16:58:02

标签: javascript

EM。我在这里看一下缓和方程式:

var easing = function( t, b, c, d ) {
   return c * ( t /= d ) * t * t * t + b;
}

所以大概可以这样写:

var easing = function( t, b, c, d ) {
   return c * ( t = (t/d) ) * t * t * t + b;
}

还是喜欢这个?嗯..不确定这个:

var easing = function( t, b, c, d ) {
   return c * t = c * (t/d) * t * t * t + b;
}

这个等式究竟是如何被javascript解析的,我的意思是,我们得到:

返回号码=号码;

跆拳道?这是如何处理的。

2 个答案:

答案 0 :(得分:3)

假设从左到右计算表达式,可以通过以下步骤简化表达式:

1)

var easing = function( t, b, c, d ) {
   return c * ( t = (t/d) ) * t * t * t + b;
}

2)

var easing = function( t, b, c, d ) {
   t = t/d;
   return c * t * t * t * t + b;
}

3)

var easing = function( t, b, c, d ) {
   return c * Math.pow(t/d, 4) + b;
}

JsFiddle代码:http://jsfiddle.net/caGWz/

答案 1 :(得分:1)

当赋值表达式出现在较大的表达式中时,它将计算为右侧操作数的值。因此,在这种情况下,子表达式( t /= d )在整个表达式中采用值( t / d )。此外,由于( t /= d )是括号中最左侧的子表达式,因此首先对其进行求值(由于标准的PEMDAS操作顺序),因此t采用值( t / d )表达的其余部分。