2016-09-14 56 views
0

我不明白在if(..isSimulation)之后没有任何代码块的情况下代码的用法,它只是在返回之后返回一个实际的代码,假设它从另一个服务器访问restful api。if(this.isSimulation)return;

右如此:

if (this.isSimulation) return; 
     var charsInfo = new Array(); 
     _keys.forEach(function (key, index, array) { 
      EveOnline.fetch('account:Characters', { keyID: key.key1, vCode: key.key2 }, Meteor.bindEnvironment(function(err, result) { 
       if (err) { 
+0

什么不清楚? 'this.isSimulation'用于区分在服务器上运行的实际方法和客户端上运行的存根版本,以模拟(某些)服务器方法的效果,从而改进UX。如果您不明白某个特定方面,请包含一些相关代码并解释您期望发生的事情。 – MasterAM

+0

这是整个代码?你没有提到你预期会发生什么。这仅仅意味着剩下的代码只能在服务器上运行。 – MasterAM

+0

这就是我所想的,但我并不承受如何回报;语法不会结束if语句,然后在那里。 –

回答

1

在大多数基于C的语言,如果内部块计算为一个语句可以省略的代码块({}括号内)。

比如这个:

if (x == 0) { 
    x++; 
} 

这:

if (x == 0) 
    x++; 

做同样的事情。这也适用于嵌套条件,就像你的例子。

所以这个:

for (i=0; i<10; i++) { 
    for (j=0; j<10; j++) { 
    if (i>j) { 
     x++; 
    } 
    } 
} 

这:

for (i=0; i<10; i++) 
    for (j=0; j<10; j++) 
    if (i>j) 
     x++; 

也是同样的事情。嵌套的条件/循环被视为单个评估的“事物”,直到它结束。基本上,在第二个例子中假设了定义代码块的括号。

你是什么不能 do有一个多行代码块不会被卷曲包围。

比如这个:

if (i>j) { 
    x++; 
    y++; 
} 

这:

if (i>j) 
    x++; 
    y++; 

做同样的事情在所有。在第一种情况下,只有当i大于j时,xy才会递增。在第二种情况下,只有当i大于j时,x才会增加,但y会一直增加,因为它不是if之前的条件的一部分。这是因为x++被认为是一个“声明”,并且y++被认为是另一个声明,并且只有第一个声明被假定为if程序块的一部分。

+0

错误的话题,这是关于JS和框架特定的。 –

+0

@ janat08我不同意。 Java的基本格式是针对Java的,在JS推出时它变得非常流行。 Java格式化本身是基于C/C++结构的。这并不是说该语言直接来自C/C++,我只是在这种情况下指出了格式化。知道这些信息可以让你知道它可能有效和无效。并且由于在C/C++中有效的在没有大括号的if/for/while语句中嵌套单行块,所以它可以通过JS进行扩展。这就是为什么我在第一行中说“基于C”的原因。 – CodeChimp

+0

对,它有点清理了一些东西,但基本上它终止了这个功能。 –