4

我在以下网址的标题中看到了画布动画 - http://blogs.msdn.com/b/davrous/archive/2011/07/21/html5-gaming-animating-sprites-in-canvas-with-easeljs。 aspx

一个jsfiddle在这里

在浏览 javascript 代码时,一些烦人的行需要花费大量时间来理解它们,但仍然没有运气,只能向 StackOverflow 的专家提问。

这些行是(jsfiddle中的第85-90行)-

 star[t][0] += mouse_x >> 4, 
 star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1), 
 star[t][0] < -x << 1 && (star[t][0] += w << 1, test = !1), 

所有这些都在 for 循环中运行。对我来说主要的困惑是,在第 1 行的赋值之后,在上面的第 2 行和第 3 行进行这两个比较。当上面第 2 行和第 3 行的这两个比较的结果没有存储到任何变量中时,这样做的目的是什么?

4

1 回答 1

5

“当上面第 2 行和第 3 行的这两个比较的结果没有存储到任何变量中时,这样做的目的是什么?”

&&用作 的简写if,因为&&运算符首先评估左侧操作数,并且只有当这是真的时,它才会评估右侧操作数。

该行:

star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1)

可以改写为:

if (star[t][0] > x << 1) {
   star[t][0] -= w << 1, test = !1;
}

(第三行也类似。)

顺便说一句,!1false.

于 2013-02-12T10:42:32.327 回答