Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (t/=d/2)在本规范中是什么意思?_Javascript_Jquery_Easing - Fatal编程技术网

Javascript (t/=d/2)在本规范中是什么意思?

Javascript (t/=d/2)在本规范中是什么意思?,javascript,jquery,easing,Javascript,Jquery,Easing,世界上有很多类似的方法: easeInOutQuint: function (x, t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; return c/2*((t-=2)*t*t*t*t + 2) + b; } (为了简洁起见,删除了重复的JS Lint输出线) (t/=d/2)在这里做什么 我想修复它(而不是告诉grunt忽略它,我现在已经这么做了),但我不明白它在做什么。某种正则表达式?请注意,t和d作

世界上有很多类似的方法:

easeInOutQuint: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
    return c/2*((t-=2)*t*t*t*t + 2) + b;
}
(为了简洁起见,删除了重复的JS Lint输出线)

(t/=d/2)
在这里做什么

我想修复它(而不是告诉grunt忽略它,我现在已经这么做了),但我不明白它在做什么。某种正则表达式?请注意,
t
d
作为参数传入。算术速记?两者都有

编辑


谢谢你快速的回答。将行更改为
if((t=t/(d/2))<1)
得到jshint停止大惊小怪。将添加关于jshint/jslint选择抛出此错误的原因的答案。TL;DR:正是因为发生在我身上的事情:“这是算术还是正则表达式?”

那么jsHint在这里是错的。那是

t /= d / 2
也就是说

t = t / (d / 2)
请注意,括号在替代版本中很重要,因为通常
/
运算符从左向右绑定。
/=
运算符的优先级低于
/

无论如何,整个事物的值将是“t”的结果(更新)值

现在,从更广泛的意义上说,jsHint抱怨这一点的晦涩也许是对的,但这是一个风格问题。运算符赋值运算符是一个相当古老的传统,至少可以追溯到C.

它的意思是
t=(t/(d/2))-这两个语句是等效的

/=
运算符是运算符的一元版本,用于除以右侧操作数并将结果赋给左侧的变量。

它是一种简写形式

$a/=$b;与$a=$a/$b相同


(t/=d/2)与t=t/(d/2)相同。

为什么我首先得到错误:

引发此错误是为了突出显示一段可能令人困惑的代码。如果您不修复此错误,您的代码将运行良好,但它可能会让其他人感到困惑,尤其是对快速搜索您的脚本的人来说

/字符在JavaScript中是不明确的。它可以表示正则表达式文字的开始或结束,如上面的示例所示,也可以解释为除法运算符。与大多数算术运算符一样,除法运算符可以与赋值运算符组合生成一个速记:


From:

它说t=(t/(d/2)),这是有效的代码,没有什么需要修正的。你是说
t/d/2
不同于
t/(d/2)
?:)<代码>1/3/2
=0.1667,
1/(3/2)
=0.6667所以……是的。它们是不同的。数学中的基本运算顺序。这是标准的东西,你甚至在接触编程之前都应该记住。主要是因为并不是所有的编程语言都尊重它,所以手动放置括号来显式地分组节。@Jack yep-用正常的代数术语来考虑它。在没有paren的情况下,除法从左到右,并且
(t/d)/2
不同于
t/(d/2)
。如果你把除法运算看成是逆相乘,它就会变得更清楚:
t/d/2
t*(1/d)*(1/2)
,而
t/(d/2)
t*(2*1/d)
我知道我的愚蠢来自何方;我把它比作
x/y/z
vs
x/z/y
,这完全是另一回事;-)该喝咖啡了。
t = t / (d / 2)