Javascript中此行的含义和用途 - star [t] [0]> x << 1 &&(star [t] [0] - = w << 1,test =!1)

Anm*_*raf 4 javascript

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

这里有一个小提琴手

在浏览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), 
Run Code Online (Sandbox Code Playgroud)

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

nnn*_*nnn 5

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

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

这条线:

star[t][0] > x << 1 && (star[t][0] -= w << 1, test = !1)
Run Code Online (Sandbox Code Playgroud)

可以改写为:

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

(和第三行类似.)

除此之外,!1是简写false.