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

时间:2013-02-12 10:33:42

标签: javascript

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

jsfiddle是here

在浏览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行的这两个比较的结果没有存储到任何变量中时,这个目的是什么? ?

1 个答案:

答案 0 :(得分: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的缩写。